Esempio n. 1
0
    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");
    }
Esempio n. 2
0
    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);
        }
    }
Esempio n. 3
0
 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();
 }
Esempio n. 4
0
    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();
    }
Esempio n. 5
0
    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();
    }
Esempio n. 6
0
    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());
    }
Esempio n. 7
0
 public Parser(Racr.Specification spec, string src) : base(src)
 {
     this.spec = spec;
 }
Esempio n. 8
0
 public B(Racr.Specification spec, string term) : base(spec, "B", term)
 {
 }
Esempio n. 9
0
	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());
	}
Esempio n. 10
0
	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");

	}
Esempio n. 11
0
	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);

	}
Esempio n. 12
0
	public Parser(Racr.Specification spec, string src) : base(src) {
		this.spec = spec;
	}