Files

30 lines
705 B
Plaintext

%parser
%{
public class List : SYMBOL {
public int MyField = 17;
public List(Parser yyp):base(yyp) {}
}
%}
%symbol Factor {
public int val;
}
%symbol Expression : List {
public int val;
public Expression ex;
public Factor fa;
public Expression(Expression e,Factor f) { ex=e; fa=f; }
}
Prog : Expression '\n' ;
Expression
: Expression '*' Factor
| Factor
;
Factor
: Variable:a { val = a.Value; }
| Int:a { val = a; }
| '(' Expression:a ')' { val = a.val; }
| error:e1 { System.Console.WriteLine("Factor expected - "+e1.Pos); val = 0; }
| '(' Expression:a error:e2 { System.Console.WriteLine(") expected - "+e2.Pos); val = a.val; }
;