コード例 #1
0
        public void TestParseTypeSignature()
        {
            var s = StackParser.ParseTypeSignature("[int]");

            // Assert.Equal(1, s.Count);
            Assert.Single(s);
            Assert.Equal(typeof(int), s.Pop());

            s = StackParser.ParseTypeSignature("['int]");
            Assert.Single(s);
            Assert.Equal(new Variable("int"), s.Pop());

            s = StackParser.ParseTypeSignature("[bool 'a 'a]");
            Assert.Equal(3, s.Count);
            Assert.Equal(typeof(bool), s.Pop());
            Assert.Equal(new Variable("a"), s.Pop());
            Assert.Equal(new Variable("a"), s.Pop());

            Assert.Throws <ParseException>(() => StackParser.ParseTypeSignature("[BOO 'a 'a]"));
        }
コード例 #2
0
 public DetermineTypesInstruction(string consumes,
                                  string produces)
     : this(StackParser.ParseTypeSignature3(consumes),
            StackParser.ParseTypeSignature3(produces))
 {
 }
コード例 #3
0
 public static Stack ToStack(this string repr)
 {
     return(StackParser.ParseStack(repr));
 }
コード例 #4
0
 /** Parse a stack and convert symbols to instructions. */
 public Stack ParseWithResolution(string s)
 {
     return(StackParser.ParseWithResolution(s, instructions));
 }
コード例 #5
0
        public void TestParsePivot()
        {
            var s = "[[1 1 +]]".ToStack();

            Assert.Equal(s, StackParser.ParsePivot("[+ 1 1 •]"));
        }