javax0.jamal.prog.analyzer.Expression3 Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jamal-prog Show documentation
Show all versions of jamal-prog Show documentation
Jamal module for Programmatic Extension
The newest version!
package javax0.jamal.prog.analyzer;
import javax0.jamal.api.BadSyntax;
import javax0.jamal.prog.commands.Operation;
/**
* An expression2 is
*
* expression3 '+' expression2
* expression3 '-' expression2
* expression3
*
*/
public class Expression3 {
public static javax0.jamal.prog.commands.Expression analyze(final Lex.List lexes) throws BadSyntax {
if (lexes.isEmpty()) {
throw new BadSyntax("Expression is empty");
}
var left = Expression4.analyze(lexes);
while (lexes.is("-") || lexes.is("+")) {
final var op = lexes.next().text;
final var right = Expression4.analyze(lexes);
left = new Operation(op, left, right);
}
return left;
}
}