boolean next(Kind expected) throws SyntaxException { if (hasNext() && expected == next) { previous = next(); next = null; return true; } return false; }
boolean next(Kind expected) throws SyntaxException { if (hasNext() && expected == next) { previous = next(); next = null; return true; } return false; }
public RENode.CharacterClassExpr.Char parseCharacterClassLiteral() throws SyntaxException { if (lexer.next(Kind.LITERAL)) { return new RENode.CharacterClassExpr.Char(lexer.getToken().charAt(0)); } else { return null; } } }
public RENode.Char parseCharacterLiteral() throws SyntaxException { if (lexer.next(Kind.LITERAL)) { return new RENode.Char(lexer.getToken().charAt(0)); } else { return null; } }
public RENode.Char parseCharacterLiteral() throws SyntaxException { if (lexer.next(Kind.LITERAL)) { return new RENode.Char(lexer.getToken().charAt(0)); } else { return null; } }
public RENode.CharacterClassExpr.Char parseCharacterClassLiteral() throws SyntaxException { if (lexer.next(Kind.LITERAL)) { return new RENode.CharacterClassExpr.Char(lexer.getToken().charAt(0)); } else { return null; } } }
private RENode.CharacterClassExpr _parseCharacterClass() throws SyntaxException { if (lexer.next(Kind.CC_OPEN)) { boolean negated = lexer.getToken().length() > 1; RENode.CharacterClassExpr expr = parseCharacterClassExpression(); if (expr != null) { if (lexer.next(Kind.CC_CLOSE)) { return negated ? new RENode.CharacterClassExpr.Not(expr) : expr; } else { throw new SyntaxException(""); } } else { throw new SyntaxException(""); } } else { return null; } }
public RENode.Atom parseCharacter() throws SyntaxException { if (lexer.next(Kind.ANY)) { return new RENode.Any(); } else { RENode.Atom atom = parseCharacterLiteral(); if (atom == null) { atom = parseCharacterClass(); } return atom; } }
private RENode.CharacterClassExpr _parseCharacterClass() throws SyntaxException { if (lexer.next(Kind.CC_OPEN)) { boolean negated = lexer.getToken().length() > 1; RENode.CharacterClassExpr expr = parseCharacterClassExpression(); if (expr != null) { if (lexer.next(Kind.CC_CLOSE)) { return negated ? new RENode.CharacterClassExpr.Not(expr) : expr; } else { throw new SyntaxException(""); } } else { throw new SyntaxException(""); } } else { return null; } }
public RENode.Atom parseCharacter() throws SyntaxException { if (lexer.next(Kind.ANY)) { return new RENode.Any(); } else { RENode.Atom atom = parseCharacterLiteral(); if (atom == null) { atom = parseCharacterClass(); } return atom; } }
public RENode.Disjunction parseDisjunction() throws SyntaxException { RENode.Alternative alternative = parseAlternative(); if (alternative != null) { if (lexer.next(Kind.OR)) { RENode.Disjunction next = parseDisjunction(); return new RENode.Disjunction(alternative, next); } else { return new RENode.Disjunction(alternative); } } else { if (lexer.next(Kind.OR)) { RENode.Disjunction next = parseDisjunction(); return new RENode.Disjunction(null, next); } else { return null; } } }
public RENode.Expr parseExpression() throws SyntaxException { RENode.Expr expr; if (lexer.next(Kind.BEGIN)) { expr = new RENode.Assertion.Begin(); } else if (lexer.next(Kind.END)) { expr = new RENode.Assertion.End(); } else if (lexer.next(Kind.GROUP_OPEN)) { GroupType groupType = GroupType.forPrefix(lexer.getToken()); RENode.Disjunction group = parseDisjunction(); if (lexer.next(Kind.GROUP_CLOSE)) { expr = new RENode.Group(group, groupType); } else { throw new SyntaxException("Group not closed "); } } else { expr = parseCharacter(); } if (expr != null) { Quantifier quantifier = parseQuantifier(); if (quantifier != null) { expr.setQuantifier(quantifier); } } return expr; }
public RENode.Expr parseExpression() throws SyntaxException { RENode.Expr expr; if (lexer.next(Kind.BEGIN)) { expr = new RENode.Assertion.Begin(); } else if (lexer.next(Kind.END)) { expr = new RENode.Assertion.End(); } else if (lexer.next(Kind.GROUP_OPEN)) { GroupType groupType = GroupType.forPrefix(lexer.getToken()); RENode.Disjunction group = parseDisjunction(); if (lexer.next(Kind.GROUP_CLOSE)) { expr = new RENode.Group(group, groupType); } else { throw new SyntaxException("Group not closed "); } } else { expr = parseCharacter(); } if (expr != null) { Quantifier quantifier = parseQuantifier(); if (quantifier != null) { expr.setQuantifier(quantifier); } } return expr; }
public RENode.Disjunction parseDisjunction() throws SyntaxException { RENode.Alternative alternative = parseAlternative(); if (alternative != null) { if (lexer.next(Kind.OR)) { RENode.Disjunction next = parseDisjunction(); return new RENode.Disjunction(alternative, next); } else { return new RENode.Disjunction(alternative); } } else { if (lexer.next(Kind.OR)) { RENode.Disjunction next = parseDisjunction(); return new RENode.Disjunction(null, next); } else { return null; } } }
public RENode.CharacterClassExpr parseCharacterClassExpression() throws SyntaxException { RENode.CharacterClassExpr left = parseCharacterClassTerm(); if (left != null) { boolean and = lexer.next(Kind.CC_AND); RENode.CharacterClassExpr right = parseCharacterClassExpression(); if (right != null) { if (and) { return new RENode.CharacterClassExpr.And(left, right); } else { return new RENode.CharacterClassExpr.Or(left, right); } } else { return left; } } else { return null; } }
public RENode.CharacterClassExpr parseCharacterClassExpression() throws SyntaxException { RENode.CharacterClassExpr left = parseCharacterClassTerm(); if (left != null) { boolean and = lexer.next(Kind.CC_AND); RENode.CharacterClassExpr right = parseCharacterClassExpression(); if (right != null) { if (and) { return new RENode.CharacterClassExpr.And(left, right); } else { return new RENode.CharacterClassExpr.Or(left, right); } } else { return left; } } else { return null; } }