NodeKind.java
package org.sterling.source.syntax;
public enum NodeKind {
UNDEFINED,
ANYTHING,
INTEGER,
IDENTIFIER,
STRING,
DOUBLE,
CHARACTER,
BOOLEAN,
NOTHING,
ADD,
SUBTRACT,
MULTIPLY,
DIVIDE,
MODULO,
POSITIVE,
NEGATIVE,
SHIFT_LEFT,
SHIFT_RIGHT,
SIGNED_SHIFT_RIGHT,
COALESCE,
BITWISE_AND,
BITWISE_OR,
BITWISE_XOR,
BITWISE_NOT,
LOGICAL_AND,
LOGICAL_OR,
LOGICAL_NOT,
GREATER_THAN,
LESS_THAN,
GREATER_THAN_EQUALS,
LESS_THAN_EQUALS,
EQUALS,
NOT_EQUALS,
ASSIGN,
TERNARY_TRUE,
TERNARY_FALSE,
GROUP_OPEN,
GROUP_CLOSE,
INDEXER_OPEN,
INDEXER_CLOSE,
ACCESSOR,
BLOCK_OPEN,
BLOCK_CLOSE,
TERMINATOR,
END_OF_INPUT,
ARROW,
KEYWORD_OBJECT,
KEYWORD_POSITIVE,
KEYWORD_NEGATIVE,
INDEXER_OPERATOR,
SEPARATOR,
KEYWORD_IF,
APPLY,
KEYWORD_MODULE,
KEYWORD_IMPORT,
WILDCARD,
KEYWORD_FROM,
KEYWORD_AS,
KEYWORD_JAVA,
ACCESSOR_EXPRESSION(false) {
@Override
public SourceNode createNode() {
return new AccessorExpression(this);
}
},
ARGUMENT(false) {
@Override
public SourceNode createNode() {
return new ArgumentExpression(this);
}
},
ARGUMENTS_EXPRESSION(false) {
@Override
public SourceNode createNode() {
return new ArgumentsExpression(this);
}
},
ARGUMENTS_EXPRESSION_TAIL(false) {
@Override
public SourceNode createNode() {
return new ArgumentsExpressionTail(this);
}
},
BOOLEAN_LITERAL(false) {
@Override
public SourceNode createNode() {
return new BooleanLiteral(this);
}
},
CHARACTER_LITERAL(false) {
@Override
public SourceNode createNode() {
return new CharacterLiteral(this);
}
},
EXPRESSION(false) {
@Override
public SourceNode createNode() {
return new SourceExpression(this);
}
},
DOUBLE_LITERAL(false) {
@Override
public SourceNode createNode() {
return new DoubleLiteral(this);
}
},
INDEXER_EXPRESSION(false) {
@Override
public SourceNode createNode() {
return new IndexerExpression(this);
}
},
INDEXER_ARGUMENTS(false) {
@Override
public SourceNode createNode() {
return new IndexerArguments(this);
}
},
INDEXER_ARGUMENTS_SUFFIX(false) {
@Override
public SourceNode createNode() {
return new IndexerArgumentsSuffix(this);
}
},
INDEXER_ARGUMENTS_TAIL(false) {
@Override
public SourceNode createNode() {
return new IndexerArgumentsTail(this);
}
},
INDEXER_ARGUMENT(false) {
@Override
public SourceNode createNode() {
return new IndexerArgument(this);
}
},
INTEGER_LITERAL(false) {
@Override
public SourceNode createNode() {
return new IntegerLiteral(this);
}
},
LITERAL_EXPRESSION(false) {
@Override
public SourceNode createNode() {
return new LiteralExpression(this);
}
},
NULL_LITERAL(false) {
@Override
public SourceNode createNode() {
return new NullLiteral(this);
}
},
PARENTHETICAL_EXPRESSION(false) {
@Override
public SourceNode createNode() {
return new ParentheticalExpression(this);
}
},
PRIMARY_EXPRESSION(false) {
@Override
public SourceNode createNode() {
return new PrimaryExpression(this);
}
},
MODULE_DECLARATION(false) {
@Override
public SourceNode createNode() {
return new ModuleDeclaration(this);
}
},
QUALIFIED_IDENTIFIER(false) {
@Override
public SourceNode createNode() {
return new QualifiedIdentifier(this);
}
},
QUALIFIED_IDENTIFIER_TAIL(false) {
@Override
public SourceNode createNode() {
return new QualifiedIdentifierTail(this);
}
},
SELECTOR_EXPRESSION(false) {
@Override
public SourceNode createNode() {
return new SelectorExpression(this);
}
},
SELECTOR_EXPRESSION_TAIL(false) {
@Override
public SourceNode createNode() {
return new SelectorExpressionTail(this);
}
},
DECLARATION_SEQUENCE(false) {
@Override
public SourceNode createNode() {
return new DeclarationSequence(this);
}
},
DECLARATION_SEQUENCE_TAIL(false) {
@Override
public SourceNode createNode() {
return new DeclarationSequenceTail(this);
}
},
STRING_LITERAL(false) {
@Override
public SourceNode createNode() {
return new StringLiteral(this);
}
},
TERNARY_EXPRESSION(false) {
@Override
public SourceNode createNode() {
return new TernaryExpression(this);
}
},
TERNARY_EXPRESSION_TAIL(false) {
@Override
public SourceNode createNode() {
return new TernaryExpressionTail(this);
}
},
UNARY_EXPRESSION(false) {
@Override
public SourceNode createNode() {
return new UnaryExpression(this);
}
},
LOGICAL_OR_EXPRESSION(false) {
@Override
public SourceNode createNode() {
return new BinaryExpression(this);
}
},
LOGICAL_OR_EXPRESSION_TAIL(false) {
@Override
public SourceNode createNode() {
return new BinaryExpressionTail(this);
}
},
LOGICAL_AND_EXPRESSION(false) {
@Override
public SourceNode createNode() {
return new BinaryExpression(this);
}
},
LOGICAL_AND_EXPRESSION_TAIL(false) {
@Override
public SourceNode createNode() {
return new BinaryExpressionTail(this);
}
},
LOGICAL_NOT_EXPRESSION(false) {
@Override
public SourceNode createNode() {
return new UnaryExpression(this);
}
},
EQUALITY_EXPRESSION(false) {
@Override
public SourceNode createNode() {
return new BinaryExpression(this);
}
},
EQUALITY_EXPRESSION_TAIL(false) {
@Override
public SourceNode createNode() {
return new BinaryExpressionTail(this);
}
},
SHIFT_EXPRESSION(false) {
@Override
public SourceNode createNode() {
return new BinaryExpression(this);
}
},
SHIFT_EXPRESSION_TAIL(false) {
@Override
public SourceNode createNode() {
return new BinaryExpressionTail(this);
}
},
COALESCE_EXPRESSION(false) {
@Override
public SourceNode createNode() {
return new BinaryExpression(this);
}
},
COALESCE_EXPRESSION_TAIL(false) {
@Override
public SourceNode createNode() {
return new BinaryExpressionTail(this);
}
},
BITWISE_XOR_EXPRESSION(false) {
@Override
public SourceNode createNode() {
return new BinaryExpression(this);
}
},
BITWISE_XOR_EXPRESSION_TAIL(false) {
@Override
public SourceNode createNode() {
return new BinaryExpressionTail(this);
}
},
BITWISE_OR_EXPRESSION(false) {
@Override
public SourceNode createNode() {
return new BinaryExpression(this);
}
},
BITWISE_OR_EXPRESSION_TAIL(false) {
@Override
public SourceNode createNode() {
return new BinaryExpressionTail(this);
}
},
BITWISE_AND_EXPRESSION(false) {
@Override
public SourceNode createNode() {
return new BinaryExpression(this);
}
},
BITWISE_AND_EXPRESSION_TAIL(false) {
@Override
public SourceNode createNode() {
return new BinaryExpressionTail(this);
}
},
ADDITIVE_EXPRESSION(false) {
@Override
public SourceNode createNode() {
return new BinaryExpression(this);
}
},
ADDITIVE_EXPRESSION_TAIL(false) {
@Override
public SourceNode createNode() {
return new BinaryExpressionTail(this);
}
},
MULTIPLICATIVE_EXPRESSION(false) {
@Override
public SourceNode createNode() {
return new BinaryExpression(this);
}
},
MULTIPLICATIVE_EXPRESSION_TAIL(false) {
@Override
public SourceNode createNode() {
return new BinaryExpressionTail(this);
}
},
DECLARATION(false) {
@Override
public SourceNode createNode() {
return new Declaration(this);
}
},
DECLARATION_LITERAL(false) {
@Override
public SourceNode createNode() {
return new DeclarationLiteral(this);
}
},
FUNCTION_LITERAL(false) {
@Override
public SourceNode createNode() {
return new FunctionLiteral(this);
}
},
CONSTANT_EXPRESSION(false) {
@Override
public SourceNode createNode() {
return new ConstantExpression(this);
}
},
LAMBDA_LITERAL(false) {
@Override
public SourceNode createNode() {
return new LambdaLiteral(this);
}
},
FUNCTION_ARGUMENTS(false) {
@Override
public SourceNode createNode() {
return new FunctionArguments(this);
}
},
LAMBDA_ARGUMENT(false) {
@Override
public SourceNode createNode() {
return new LambdaArgument(this);
}
},
FUNCTION_ARGUMENTS_TAIL(false) {
@Override
public SourceNode createNode() {
return new FunctionArgumentsTail(this);
}
},
OBJECT_LITERAL(false) {
@Override
public SourceNode createNode() {
return new ObjectLiteral(this);
}
},
OBJECT_HEADER(false) {
@Override
public SourceNode createNode() {
return new ObjectHeader(this);
}
},
OBJECT_ARGUMENTS(false) {
@Override
public SourceNode createNode() {
return new ObjectArguments(this);
}
},
OBJECT_ARGUMENTS_LIST(false) {
@Override
public SourceNode createNode() {
return new ObjectArgumentsList(this);
}
},
OBJECT_ARGUMENT(false) {
@Override
public SourceNode createNode() {
return new ObjectArgument(this);
}
},
OBJECT_BODY(false) {
@Override
public SourceNode createNode() {
return new ObjectBody(this);
}
},
OBJECT_MEMBERS(false) {
@Override
public SourceNode createNode() {
return new ObjectMembers(this);
}
},
OBJECT_MEMBERS_SUFFIX(false) {
@Override
public SourceNode createNode() {
return new ObjectMembersSuffix(this);
}
},
OBJECT_MEMBERS_TAIL(false) {
@Override
public SourceNode createNode() {
return new ObjectMembersTail(this);
}
},
OBJECT_MEMBER(false) {
@Override
public SourceNode createNode() {
return new ObjectMember(this);
}
},
OBJECT_MEMBER_NAME(false) {
@Override
public SourceNode createNode() {
return new ObjectMemberName(this);
}
},
APPLY_EXPRESSION(false) {
@Override
public SourceNode createNode() {
return new ApplyExpression(this);
}
},
MODULE_HEADER(false) {
@Override
public SourceNode createNode() {
return new ModuleHeader(this);
}
},
MODULE_IDENTIFIER(false) {
@Override
public SourceNode createNode() {
return new ModuleIdentifier(this);
}
},
MODULE_IDENTIFIER_TAIL(false) {
@Override
public SourceNode createNode() {
return new ModuleIdentifierTail(this);
}
},
IMPORT_HEADERS(false) {
@Override
public SourceNode createNode() {
return new ImportHeaders(this);
}
},
IMPORT_HEADER(false) {
@Override
public SourceNode createNode() {
return new ImportHeader(this);
}
},
IMPORT_HEADER_SUFFIX(false) {
@Override
public SourceNode createNode() {
return new ImportHeaderSuffix(this);
}
},
IMPORT_HEADER_TAIL(false) {
@Override
public SourceNode createNode() {
return new ImportHeaderTail(this);
}
},
IMPORT_IDENTIFIER(false) {
@Override
public SourceNode createNode() {
return new ImportIdentifier(this);
}
},
IMPORT_IDENTIFIER_ALIAS(false) {
@Override
public SourceNode createNode() {
return new ImportIdentifierAlias(this);
}
},
IMPORT_IDENTIFIER_TAIL(false) {
@Override
public SourceNode createNode() {
return new ImportIdentifierTail(this);
}
},
IMPORT_STATEMENT(false) {
@Override
public SourceNode createNode() {
return new ImportStatement(this);
}
},
FROM_STATEMENT(false) {
@Override
public SourceNode createNode() {
return new FromStatement(this);
}
},
FROM_IDENTIFIER(false) {
@Override
public SourceNode createNode() {
return new FromIdentifier(this);
}
},
FROM_IDENTIFIER_TAIL(false) {
@Override
public SourceNode createNode() {
return new FromIdentifierTail(this);
}
},
FROM_IDENTIFIERS(false) {
@Override
public SourceNode createNode() {
return new FromIdentifiers(this);
}
},
FROM_IDENTIFIER_LIST(false) {
@Override
public SourceNode createNode() {
return new FromIdentifierList(this);
}
},
FROM_IDENTIFIER_LIST_TAIL(false) {
@Override
public SourceNode createNode() {
return new FromIdentifierListTail(this);
}
},
SINGLE_OBJECT_ARGUMENT(false) {
@Override
public SourceNode createNode() {
return new SingleObjectArgument(this);
}
},
JAVA_EXPRESSION(false) {
@Override
public SourceNode createNode() {
return new JavaExpression(this);
}
}
;
public static final NodeKind ANYTHING_ELSE = ANYTHING;
private final boolean terminal;
private NodeKind() {
this(true);
}
private NodeKind(boolean terminal) {
this.terminal = terminal;
}
public SourceNode createNode() {
return new SourceNode(this);
}
public boolean isTerminal() {
return terminal;
}
}