/* To see the results of this specicifation in terms of the vtree-language use: pascal.vlag:vlagGen/gen.vtree!less */ VLROOT Root(Program(ProgramVarDeclList(VarDecl*), ProgramStmtList(Stmt*))) {} ABSTRACT VarDecl {} VLRULE IntegerVarDecl(IntegerVarDeclDefIdentList(DefIdent{1})) ACTS AS VarDecl {} VLRULE DefIdent() { PERS Name: VLString EDITWITH ENTRY; } ABSTRACT Stmt {} VLRULE StmtGroup(StmtGroupStmtList(Stmt*)) ACTS AS Stmt {} VLRULE IfStmt(IfExpr(Expr), IfTrueBranch(Stmt), IfFalseBranch(Stmt)) ACTS AS Stmt {} VLRULE WhileStmt(WhileExpr(Expr), WhileBody(Stmt)) ACTS AS Stmt {} VLRULE Assignment(AssignmentTarget(Expr), AssignmentSource(Expr)) ACTS AS Stmt {} ABSTRACT Expr {} VLRULE Add(AddOpr1(Expr), AddOpr2(Expr)) ACTS AS Expr {} VLRULE Sub(SubOpr1(Expr), SubOpr2(Expr)) ACTS AS Expr {} VLRULE Mul(MulOpr1(Expr), MulOpr2(Expr)) ACTS AS Expr {} VLRULE Div(DivOpr1(Expr), DivOpr2(Expr)) ACTS AS Expr {} VLRULE CompGT(CompGTOpr1(Expr), CompGTOpr2(Expr)) ACTS AS Expr {} VLRULE CompLT(CompLTOpr1(Expr), CompLTOpr2(Expr)) ACTS AS Expr {} VLRULE CompEQ(CompEQOpr1(Expr), CompEQOpr2(Expr)) ACTS AS Expr {} VLRULE Ident() ACTS AS Expr { PERS Name: VLString EDITWITH ENTRY; } VLRULE Constant() ACTS AS Expr { PERS Value: VLString EDITWITH ENTRY; }