DSLExpression LogicFactor() { DSLExpression result; result = ComparisonFactor(); if (la.kind == 3) { Get(); Token op = t; DSLExpression right = ComparisonFactor(); result = new Binary(op.val, result, right); } return result; }
DSLExpression Factor() { DSLExpression result; result = null; if (la.kind == 1) { result = MemberExpression(result); } else if (la.kind == 2) { Get(); result = new IntLiteral(t.val); } else if (la.kind == 11) { Get(); result = Expression(); Expect(12); } else SynErr(16); return result; }
DSLExpression Expression() { DSLExpression result; result = LogicFactor(); return result; }
DSLExpression MemberExpression(DSLExpression receiver) { DSLExpression result; result = null; Expect(1); Variable variable = new Variable(receiver, t.val); result = variable; if (la.kind == 11) { Get(); List<DSLExpression> parameters = new ArrayList<>(); DSLExpression parameter; if (StartOf(2)) { parameter = Expression(); parameters.add(parameter); while (la.kind == 13) { Get(); parameter = Expression(); parameters.add(parameter); } } Expect(12); result = new Call(variable.getReceiver(), variable.getName(), parameters); } if (la.kind == 14) { Get(); result = MemberExpression(result); } return result; }
private DSLExpression parseImpl() { la = new Token(); la.val = ""; Get(); DSLExpression result = Expression(); Expect(0); return result; }
DSLExpression ComparisonFactor() { DSLExpression result; result = NegateFactor(); if (StartOf(1)) { switch (la.kind) { case 4: { Get(); break; Get(); break; Get(); break; Get(); break; Get(); break; Get(); break; DSLExpression right = NegateFactor(); result = new Binary(op.val, result, right);
public static DSLExpression parse(InputStream input) { Parser parser = new Parser(input); DSLExpression result = parser.parseImpl(); if (parser.errors.errors.size() > 0) { StringBuilder msg = new StringBuilder(); for (String error : parser.errors.errors) { msg.append(error).append("\n"); } throw new InvalidExpressionException(msg.toString()); } return result; }
DSLExpression MemberExpression(DSLExpression receiver) { DSLExpression result; result = null; Expect(1); Variable variable = new Variable(receiver, t.val); result = variable; if (la.kind == 11) { Get(); List<DSLExpression> parameters = new ArrayList<>(); DSLExpression parameter; if (StartOf(2)) { parameter = Expression(); parameters.add(parameter); while (la.kind == 13) { Get(); parameter = Expression(); parameters.add(parameter); } } Expect(12); result = new Call(variable.getReceiver(), variable.getName(), parameters); } if (la.kind == 14) { Get(); result = MemberExpression(result); } return result; }
private DSLExpression parseImpl() { la = new Token(); la.val = ""; Get(); DSLExpression result = Expression(); Expect(0); return result; }
DSLExpression ComparisonFactor() { DSLExpression result; result = NegateFactor(); if (StartOf(1)) { switch (la.kind) { case 4: { Get(); break; Get(); break; Get(); break; Get(); break; Get(); break; Get(); break; DSLExpression right = NegateFactor(); result = new Binary(op.val, result, right);
public static DSLExpression parse(InputStream input) { Parser parser = new Parser(input); DSLExpression result = parser.parseImpl(); if (parser.errors.errors.size() > 0) { StringBuilder msg = new StringBuilder(); for (String error : parser.errors.errors) { msg.append(error).append("\n"); } throw new InvalidExpressionException(msg.toString()); } return result; }
DSLExpression Factor() { DSLExpression result; result = null; if (la.kind == 1) { result = MemberExpression(result); } else if (la.kind == 2) { Get(); result = new IntLiteral(t.val); } else if (la.kind == 11) { Get(); result = Expression(); Expect(12); } else SynErr(16); return result; }
DSLExpression LogicFactor() { DSLExpression result; result = ComparisonFactor(); if (la.kind == 3) { Get(); Token op = t; DSLExpression right = ComparisonFactor(); result = new Binary(op.val, result, right); } return result; }