static void TestRewriteAbstract() { var spec = new Racr.Specification(); spec.AstRule("S->A"); spec.AstRule("A->a"); spec.AstRule("Aa:A->b-c"); spec.CompileAstSpecifications("S"); spec.CompileAgSpecifications(); var ast = new Racr.AstNode(spec, "S", new Racr.AstNode(spec, "Aa", 1, 2, 3)); var A = ast.Child("A"); Console.WriteLine(A.NumChildren() == 3); Console.WriteLine(A.NodeType() == "Aa"); var c = A.RewriteAbstract("A"); foreach (var x in c) { Console.WriteLine(x); } Console.WriteLine(A.NumChildren() == 1); Console.WriteLine(A.NodeType() == "A"); }
static void TestRewriteRefine() { var spec = new Racr.Specification(); spec.AstRule("S->A"); spec.AstRule("A->a"); spec.AstRule("Aa:A->b-c"); spec.CompileAstSpecifications("S"); spec.CompileAgSpecifications(); var ast = new Racr.AstNode(spec, "S", new Racr.AstNode(spec, "A", 1)); var A = ast.Child("A"); Console.WriteLine("{0}", A.NumChildren() == 1); Console.WriteLine("{0}", A.NodeType() == "A"); A.RewriteRefine("Aa", 2, 3); Console.WriteLine("{0}", A.NumChildren() == 3); Console.WriteLine("{0}", A.NodeType() == "Aa"); foreach (var c in A.Children()) { Console.WriteLine(c); } }
public RewritesTests() { spec = new Racr.Specification(); spec.AstRule("S->A"); spec.AstRule("A->a-B<B1"); spec.AstRule("Aa:A->B<B2-c"); spec.AstRule("B->"); spec.CompileAstSpecifications("S"); spec.CompileAgSpecifications(); }
static CalculatorLanguage() { CL = new Racr.Specification(); // abstract syntax tree CL.AstRule("Calculator->Definition*-Expression"); CL.AstRule("Definition->name-value"); CL.AstRule("Expression->"); CL.AstRule("BinaryExpression:Expression->Expression<Op1-Expression<Op2"); CL.AstRule("Addition:BinaryExpression->"); CL.AstRule("Multiplication:BinaryExpression->"); CL.AstRule("Number:Expression->value"); CL.AstRule("Constant:Expression->name"); CL.CompileAstSpecifications("Calculator"); CL.RegisterAgRules(typeof(CalculatorLanguage)); CL.CompileAgSpecifications(); }
static QuestionnairesLanguage() { QL = new Racr.Specification(); QL.AstRule("Form->Element*<Body"); QL.AstRule("Element->"); QL.AstRule("Group:Element->Expression-Element*<Body"); QL.AstRule("Question:Element->name-label"); QL.AstRule("OrdinaryQuestion:Question->type-value"); QL.AstRule("ComputedQuestion:Question->Expression"); QL.AstRule("Expression->"); QL.AstRule("Use:Expression->name"); QL.AstRule("Constant:Expression->value"); QL.AstRule("Computation:Expression->operator-Expression*<Operands"); QL.CompileAstSpecifications("Form"); QL.RegisterAgRules(typeof(QuestionnairesLanguage)); QL.RegisterAgRules(typeof(QuestionnairesGui)); QL.CompileAgSpecifications(); }
static void TestRewriteSubtree() { var spec = new Racr.Specification(); spec.AstRule("S->A"); spec.AstRule("A->a"); spec.AstRule("Aa:A->b-c"); spec.CompileAstSpecifications("S"); spec.CompileAgSpecifications(); var ast = new Racr.AstNode(spec, "S", new Racr.AstNode(spec, "A", 42)); var A = ast.Child("A"); Console.WriteLine(A.HasParent()); Console.WriteLine(ast.Child("A").NodeType()); A.RewriteSubtree(new Racr.AstNode(spec, "Aa", 1, 2, 3)); Console.WriteLine(A.HasParent()); Console.WriteLine(ast.Child("A").NodeType()); }
public Parser(Racr.Specification spec, string src) : base(src) { this.spec = spec; }
public B(Racr.Specification spec, string term) : base(spec, "B", term) { }
static void TestRewriteAbstract() { var spec = new Racr.Specification(); spec.AstRule("S->A"); spec.AstRule("A->a"); spec.AstRule("Aa:A->b-c"); spec.CompileAstSpecifications("S"); spec.CompileAgSpecifications(); var ast = new Racr.AstNode(spec, "S", new Racr.AstNode(spec, "Aa", 1, 2, 3)); var A = ast.Child("A"); Console.WriteLine(A.NumChildren() == 3); Console.WriteLine(A.NodeType() == "Aa"); var c = A.RewriteAbstract("A"); foreach (var x in c) Console.WriteLine(x); Console.WriteLine(A.NumChildren() == 1); Console.WriteLine(A.NodeType() == "A"); }
static void TestRewriteRefine() { var spec = new Racr.Specification(); spec.AstRule("S->A"); spec.AstRule("A->a"); spec.AstRule("Aa:A->b-c"); spec.CompileAstSpecifications("S"); spec.CompileAgSpecifications(); var ast = new Racr.AstNode(spec, "S", new Racr.AstNode(spec, "A", 1)); var A = ast.Child("A"); Console.WriteLine("{0}", A.NumChildren() == 1); Console.WriteLine("{0}", A.NodeType() == "A"); A.RewriteRefine("Aa", 2, 3); Console.WriteLine("{0}", A.NumChildren() == 3); Console.WriteLine("{0}", A.NodeType() == "Aa"); foreach (var c in A.Children()) Console.WriteLine(c); }