Skip to content
Snippets Groups Projects
Commit 2c94d94f authored by Johannes Mey's avatar Johannes Mey
Browse files

add expressions

parent 191eb4ff
No related branches found
No related tags found
No related merge requests found
...@@ -40,17 +40,17 @@ ...@@ -40,17 +40,17 @@
// aspect_body_declarations_eof ::= aspect_body_declaration* EOF // aspect_body_declarations_eof ::= aspect_body_declaration* EOF
jastaddAspectFile ::= ( aspect_declaration | comment )* //jastaddAspectFile ::= ( aspect_declaration | comment )*
//
comment ::= (MULTILINECOMMENT | DOCCOMMENT | SINGLELINECOMMENT) //comment ::= (MULTI_LINE_COMMENT | DOC_COMMENT | SINGLE_LINE_COMMENT)
compilation_unit ::= import_declaration* type_declaration* compilation_unit ::= import_declaration* type_declaration*
import_declaration ::= IMPORT STATIC? name (DOT STAR)? SEMICOLON import_declaration ::= IMPORT STATIC? name_name (DOT STAR)? SEMICOLON
modifiers ::= (PUBLIC | STATIC | PROTECTED | PRIVATE | FINAL | ABSTRACT | SYNCHRONIZED | NATIVE | TRANSIENT | VOLATILE | STRICTFP)* modifiers ::= (PUBLIC | STATIC | PROTECTED | PRIVATE | FINAL | ABSTRACT | SYNCHRONIZED | NATIVE | TRANSIENT | VOLATILE | STRICTFP)*
type_declaration ::= SEMICOLON | (modifiers ( class_declaration | interface_declaration | unmodified_enum_declaration | annotation_type_declaration | aspect_declaration ) ) type_declaration ::= SEMICOLON | (modifiers ( class_declaration | interface_declaration | enum_declaration | annotation_type_declaration | aspect_declaration ) )
aspect_declaration ::= ASPECT IDENTIFIER aspect_body aspect_declaration ::= ASPECT IDENTIFIER aspect_body
...@@ -77,9 +77,7 @@ aspect_body_declaration ::= ( aspect_refine_inh_equation ...@@ -77,9 +77,7 @@ aspect_body_declaration ::= ( aspect_refine_inh_equation
| aspect_field_declaration | aspect_field_declaration
| aspect_cache_declaration ) | aspect_cache_declaration )
aspect_class_declaration ::= modifiers CLASS IDENTIFIER type_parameters (EXTENDS class_or_interface_type)? (IMPLEMENTS type_name_list)? aspect_class_body aspect_class_declaration ::= modifiers class_declaration
aspect_class_body ::= class_body_declaration_in_paren // including curly braces
aspect_interface_declaration ::= modifiers INTERFACE IDENTIFIER type_parameters? (EXTENDS type_name_list)? LBRACE aspect_interface_member_declaration* RBRACE aspect_interface_declaration ::= modifiers INTERFACE IDENTIFIER type_parameters? (EXTENDS type_name_list)? LBRACE aspect_interface_member_declaration* RBRACE
...@@ -90,17 +88,17 @@ aspect_interface_member_declaration ::= ( aspect_nested_class_declaration ...@@ -90,17 +88,17 @@ aspect_interface_member_declaration ::= ( aspect_nested_class_declaration
| aspect_interface_method_declaration | aspect_interface_method_declaration
| aspect_interface_field_declaration ) | aspect_interface_field_declaration )
aspect_interface_syn_attribute_declaration ::= annotation* SYN LAZY? FINAL? aspect_type attribute_name LPAREN (type IDENTIFIER (COMMA type IDENTIFIER)* )? RPAREN (CIRCULAR LBRACKET JAVA_EXPRESSION RBRACKET)? SEMICOLON aspect_interface_syn_attribute_declaration ::= annotation* SYN LAZY? FINAL? aspect_type attribute_name LPAREN (type IDENTIFIER (COMMA type IDENTIFIER)* )? RPAREN (CIRCULAR expression_in_brackets)? SEMICOLON
aspect_interface_inh_attribute_declaration ::= annotation* INH LAZY? FINAL? aspect_type attribute_name LPAREN (type IDENTIFIER (COMMA type IDENTIFIER)* )? RPAREN (CIRCULAR LBRACKET JAVA_EXPRESSION RBRACKET)? SEMICOLON aspect_interface_inh_attribute_declaration ::= annotation* INH LAZY? FINAL? aspect_type attribute_name LPAREN (type IDENTIFIER (COMMA type IDENTIFIER)* )? RPAREN (CIRCULAR expression_in_brackets)? SEMICOLON
aspect_interface_method_declaration ::= (PUBLIC | PROTECTED | PRIVATE | STATIC | ABSTRACT | FINAL | NATIVE | SYNCHRONIZED )* aspect_result_type method_declarator (THROWS name_list ) SEMICOLON aspect_interface_method_declaration ::= (PUBLIC | PROTECTED | PRIVATE | STATIC | ABSTRACT | FINAL | NATIVE | SYNCHRONIZED )* aspect_result_type method_declarator (THROWS name_list ) SEMICOLON
aspect_interface_field_declaration ::= modifiers aspect_type variable_declarator (COMMA variable_declarator)* SEMICOLON aspect_interface_field_declaration ::= modifiers aspect_type variable_declarator (COMMA variable_declarator)* SEMICOLON
aspect_nested_interface_declaration ::= modifiers INTERFACE IDENTIFIER type_parameters? EXTENDS? LBRACE JAVA_INTERFACE_MEMBER_DECLARATIONS RBRACE aspect_nested_interface_declaration ::= modifiers interface_declaration
aspect_nested_class_declaration ::= modifiers CLASS IDENTIFIER type_parameters? (EXTENDS class_or_interface_type)? (IMPLEMENTS type_name_list)? java_class_body_declaration aspect_nested_class_declaration ::= modifiers class_declaration
aspect_method_declaration ::= modifiers type_parameters? aspect_result_type IDENTIFIER DOT method_declarator (THROWS name_list)? (block | SEMICOLON) aspect_method_declaration ::= modifiers type_parameters? aspect_result_type IDENTIFIER DOT method_declarator (THROWS name_list)? (block | SEMICOLON)
...@@ -112,9 +110,9 @@ aspect_refine_constructor_declaration ::= REFINE IDENTIFIER (PUBLIC | PROTECTED ...@@ -112,9 +110,9 @@ aspect_refine_constructor_declaration ::= REFINE IDENTIFIER (PUBLIC | PROTECTED
aspect_field_declaration ::= modifiers aspect_type IDENTIFIER DOT variable_declarator (COMMA variable_declarator)* SEMICOLON aspect_field_declaration ::= modifiers aspect_type IDENTIFIER DOT variable_declarator (COMMA variable_declarator)* SEMICOLON
aspect_syn_attribute_declaration ::= annotation* SYN NTA? LAZY? FINAL? aspect_type IDENTIFIER DOT attribute_name LPAREN (type IDENTIFIER (COMMA type IDENTIFIER)* )? RPAREN (CIRCULAR LBRACKET JAVA_EXPRESSION RBRACKET)? ( ASSIGN JAVA_EXPRESSION SEMICOLON | block | SEMICOLON ) aspect_syn_attribute_declaration ::= annotation* SYN NTA? LAZY? FINAL? aspect_type IDENTIFIER DOT attribute_name LPAREN (type IDENTIFIER (COMMA type IDENTIFIER)* )? RPAREN (CIRCULAR expression_in_brackets)? ( ASSIGN JAVA_EXPRESSION SEMICOLON | block | SEMICOLON )
aspect_inh_attribute_declaration ::= annotation* INH NTA? LAZY? FINAL? aspect_type IDENTIFIER DOT attribute_name LPAREN (type IDENTIFIER (COMMA type IDENTIFIER)* )? (CIRCULAR LBRACKET JAVA_EXPRESSION RBRACKET)? SEMICOLON aspect_inh_attribute_declaration ::= annotation* INH NTA? LAZY? FINAL? aspect_type IDENTIFIER DOT attribute_name LPAREN (type IDENTIFIER (COMMA type IDENTIFIER)* )? (CIRCULAR expression_in_brackets)? SEMICOLON
aspect_rewrite ::= REWRITE IDENTIFIER (IDENTIFIER DOT IDENTIFIER LPAREN RPAREN)? LBRACE ((WHEN LPAREN JAVA_EXPRESSION RPAREN)? TO aspect_type ( JAVA_EXPRESSION SEMICOLON | block ))+ RBRACE aspect_rewrite ::= REWRITE IDENTIFIER (IDENTIFIER DOT IDENTIFIER LPAREN RPAREN)? LBRACE ((WHEN LPAREN JAVA_EXPRESSION RPAREN)? TO aspect_type ( JAVA_EXPRESSION SEMICOLON | block ))+ RBRACE
...@@ -126,7 +124,7 @@ aspect_inh_equation ::= annotation* EQUATION IDENTIFIER DOT IDENTIFIER LPAREN (I ...@@ -126,7 +124,7 @@ aspect_inh_equation ::= annotation* EQUATION IDENTIFIER DOT IDENTIFIER LPAREN (I
aspect_refine_inh_equation ::= REFINE IDENTIFIER EQUATION IDENTIFIER DOT IDENTIFIER LPAREN (INT IDENTIFIER)? RPAREN DOT attribute_name LPAREN (type IDENTIFIER (COMMA type IDENTIFIER)*)? RPAREN (ASSIGN JAVA_EXPRESSION | block) aspect_refine_inh_equation ::= REFINE IDENTIFIER EQUATION IDENTIFIER DOT IDENTIFIER LPAREN (INT IDENTIFIER)? RPAREN DOT attribute_name LPAREN (type IDENTIFIER (COMMA type IDENTIFIER)*)? RPAREN (ASSIGN JAVA_EXPRESSION | block)
collection_attribute ::= annotation* COLL aspect_type IDENTIFIER DOT attribute_name LPAREN RPAREN CIRCULAR? (LBRACKET JAVA_EXPRESSION RBRACKET)? (WITH IDENTIFIER)? (ROOT IDENTIFIER)? SEMICOLON collection_attribute ::= annotation* COLL aspect_type IDENTIFIER DOT attribute_name LPAREN RPAREN CIRCULAR? (expression_in_brackets)? (WITH IDENTIFIER)? (ROOT IDENTIFIER)? SEMICOLON
collection_contribution ::= annotation* CONTRIBUTES ( NTA JAVA_EXPRESSION TO IDENTIFIER DOT attribute_name LPAREN RPAREN | EACH? JAVA_EXPRESSION (WHEN JAVA_EXPRESSION)? TO IDENTIFIER DOT attribute_name LPAREN RPAREN (FOR EACH? JAVA_EXPRESSION)? | block TO IDENTIFIER DOT attribute_name LPAREN RPAREN ) SEMICOLON collection_contribution ::= annotation* CONTRIBUTES ( NTA JAVA_EXPRESSION TO IDENTIFIER DOT attribute_name LPAREN RPAREN | EACH? JAVA_EXPRESSION (WHEN JAVA_EXPRESSION)? TO IDENTIFIER DOT attribute_name LPAREN RPAREN (FOR EACH? JAVA_EXPRESSION)? | block TO IDENTIFIER DOT attribute_name LPAREN RPAREN ) SEMICOLON
...@@ -145,21 +143,18 @@ block_statement ::= (FINAL? type java_identifier local_variable_declaration SEMI ...@@ -145,21 +143,18 @@ block_statement ::= (FINAL? type java_identifier local_variable_declaration SEMI
aspect_cache_declaration ::= (CACHE | UNCACHE) IDENTIFIER DOT attribute_name LPAREN (type IDENTIFIER? (type IDENTIFIER?)* )? RPAREN SEMICOLON aspect_cache_declaration ::= (CACHE | UNCACHE) IDENTIFIER DOT attribute_name LPAREN (type IDENTIFIER? (type IDENTIFIER?)* )? RPAREN SEMICOLON
java_identifier ::= IDENTIFIER | INH | SYN | LAZY | REWRITE | TO | WHEN | ASPECT | EQUATION | CIRCULAR | REFINE | COLL | CONTRIBUTES | EACH | NTA | CACHE | UNCACHE
// Attribute type names can not start with JastAdd reserved words such as 'syn', 'eq', etc. // Attribute type names can not start with JastAdd reserved words such as 'syn', 'eq', etc.
aspect_type ::= aspect_reference_type | ( primitive_type (LBRACKET RBRACKET)? ) aspect_type ::= aspect_reference_type | ( primitive_type (LBRACKET RBRACKET)? )
formal_parameters ::= LPAREN ( formal_parameter ( COMMA formal_parameter )* )? RPAREN formal_parameters ::= LPAREN ( formal_parameter ( COMMA formal_parameter )* )? RPAREN
name_list ::= name (COMMA name)*
formal_parameter ::= FINAL? type DOTS? variable_declarator_id formal_parameter ::= FINAL? type DOTS? variable_declarator_id
variable_declarator_id ::= java_identifier ( LBRACKET RBRACKET )* variable_declarator_id ::= java_identifier ( LBRACKET RBRACKET )*
java_identifier ::= IDENTIFIER | INH | SYN | LAZY | REWRITE | TO | WHEN | ASPECT | EQUATION | CIRCULAR | REFINE | COLL | CONTRIBUTES | EACH | NTA | CACHE | UNCACHE aspect_enum_declaration ::= modifiers enum_declaration
aspect_enum_declaration ::= modifiers ENUM IDENTIFIER (IMPLEMENTS type_name_list)? JAVA_ENUM_BODY
variable_declarator ::= variable_declarator_id ( ASSIGN variable_initializer )? variable_declarator ::= variable_declarator_id ( ASSIGN variable_initializer )?
...@@ -185,6 +180,80 @@ wildcard_bounds ::= (EXTENDS reference_type) | SUPER reference_type ...@@ -185,6 +180,80 @@ wildcard_bounds ::= (EXTENDS reference_type) | SUPER reference_type
primitive_type ::= boolean | char | byte | short | int | long | float | double primitive_type ::= boolean | char | byte | short | int | long | float | double
result_type ::= VOID | type
name_name ::= java_identifier (DOT java_identifier)*
name_list ::= name_name (COMMA name_name)*
expression ::= lambda_expression | ( conditional_expression (assignment_operator expression)? )
assignment_operator ::= ASSIGN | STARASSIGN | SLASHASSIGN | REMASSIGN | PLUSASSIGN | MINUSASSIGN | LSHIFTASSIGN | RSIGNEDSHIFTASSIGN | RUNSIGNEDSHIFTASSIGN | ANDASSIGN | XORASSIGN | ORASSIGN
conditional_expression ::= conditional_or_expression ( HOOK expression COLON conditional_expression)?
conditional_or_expression ::= conditional_and_expression ( SC_OR expression COLON conditional_expression )*
conditional_and_expression ::= inclusive_or_expression ( SC_AND inclusive_or_expression )*
inclusive_or_expression ::= exclusive_or_expression ( BIT_OR exclusive_or_expression )*
exclusive_or_expression ::= and_expression ( XOR and_expression )*
and_expression ::= equality_expression ( BIT_AND equality_expression )*
equality_expression ::= instance_of_expression ( (EQ | NE) instance_of_expression )*
instance_of_expression ::= relational_expression ( INSTANCEOF type )?
relational_expression ::= shift_expression ( (LT | GT | LE | GE) shift_expression )*
shift_expression ::= additive_expression ( ( (LSHIFT) | (GT GT GT?) ) additive_expression )*
additive_expression ::= multiplicative_expression ( (PLUS | MINUS) multiplicative_expression )*
multiplicative_expression ::= unary_expression ( (STAR | SLASH | REM) unary_expression )*
unary_expression ::= ( (PLUS | MINUS) unary_expression ) | pre_increment_expression | pre_decrement_expression | unary_expression_not_plus_minus
pre_increment_expression ::= INCR primary_expression
pre_decrement_expression ::= DECR primary_expression
unary_expression_not_plus_minus ::= ( (TILDE | BANG) unary_expression ) | cast_expression | postfix_expression
postfix_expression ::= primary_expression (INCR | DECR)?
cast_expression ::= LPAREN type RPAREN unary_expression_not_plus_minus
primary_expression ::= primary_prefix (primary_suffix)*
primary_prefix ::= literal | THIS | (SUPER DOT java_identifier) | (LPAREN expression RPAREN) | allocation_expression | (result_type DOT CLASS) | name_name
primary_suffix ::= (DOT THIS) | (DOT allocation_expression) | (DOT type_arguments java_identifier) | (LBRACKET expression RBRACKET) | (DOT java_identifier) | arguments | DOUBLECOLON NEW | DOUBLECOLON java_identifier
literal ::= INTEGER_LITERAL | FLOATING_POINT_LITERAL | CHARACTER_LITERAL | STRING_LITERAL | boolean_literal | null_literal
boolean_literal ::= TRUE | FALSE
null_literal ::= NULL
arguments ::= LPAREN argument_list RPAREN
argument_list ::= expression (COMMA expression)*
allocation_expression ::= ( NEW primitive_type array_dims_and_inits ) | (NEW class_or_interface_type type_arguments? (array_dims_and_inits | (arguments class_body?)) )
array_dims_and_inits ::= ( (LBRACKET expression RBRACKET)+ (LBRACKET RBRACKET)* ) | ( (LBRACKET RBRACKET)+ array_initializer )
lambda_expression ::= lambda_parameters ARROW ( expression | block )
lambda_parameters ::= name_name | (LPAREN (typed_lambda_parameter | untyped_lambda_parameter)? RPAREN)
typed_lambda_parameter ::= type name_name (COMMA type name_name)*
untyped_lambda_parameter ::= name_name (COMMA name_name)*
local_variable_declaration ::= FINAL? type variable_declarator (COMMA variable_declarator)* local_variable_declaration ::= FINAL? type variable_declarator (COMMA variable_declarator)*
type_parameters ::= LT type_parameter (COMMA type_parameter)* GT type_parameters ::= LT type_parameter (COMMA type_parameter)* GT
...@@ -197,24 +266,43 @@ aspect_result_type ::= VOID | aspect_type ...@@ -197,24 +266,43 @@ aspect_result_type ::= VOID | aspect_type
method_declarator ::= java_identifier formal_parameters (LBRACKET RBRACKET)* method_declarator ::= java_identifier formal_parameters (LBRACKET RBRACKET)*
// TODO maybe change order!
annotation ::= ( normal_annotation | single_member_annotation | marker_annotation ) annotation ::= ( normal_annotation | single_member_annotation | marker_annotation )
normal_annotation ::= AT name java_member_value_pairs_in_paren
marker_annotation ::= AT name
single_member_annotation ::= AT name java_member_value_in_paren
// island things // island things
class_body_declaration_in_paren ::= JAVA_IN_PAREN //class_body_declaration_in_paren ::= JAVA_IN_PAREN
//{ //{
// implements="org.jastadd.tooling.aspect.psi.JastAddAspectJavaBlockExtension" // implements="org.jastadd.tooling.aspect.psi.JastAddAspectJavaBlockExtension"
// extends="org.jastadd.tooling.aspect.psi.impl.JastAddAspectJavaBlockImplExtension" // extends="org.jastadd.tooling.aspect.psi.impl.JastAddAspectJavaBlockImplExtension"
//} //}
java_member_value_in_paren ::= JAVA_IN_PAREN // LPAREN member_value RPAREN // should be parsed after circular and in collection attributes
expression_in_brackets ::= LBRACKET_ANYTHING_RBRACKET // LBRACKET expression RBRACKET
// at symbol only in these rules
marker_annotation ::= AT_NAME
normal_annotation ::= AT_NAME_LPAREN_ANYTHING_RPAREN // TODO!
single_member_annotation ::= AT_NAME_LPAREN_ANYTHING_RPAREN // TODO!
annotation_type_declaration ::= AT_INTERFACE_ANYTHING_LBRACE_ANYTHING_RBRACE // AT INTERFACE java_indentifier LBRACE annotation_type_member_declaration RBRACE
// previous token must not be DOT!
class_declaration ::= CLASS_ANYTHING_LBRACE_ANYTHING_RBRACE // CLASS IDENTIFIER (EXTENDS class_or_type_interface)? (implements type_name_list)? LBRACE class_body_declaration RBRACE
// must not be directly in an aspect, but can be in a class or interface (or enum?) in an aspect
interface_declaration ::= INTERFACE_ANYTHING_LBRACE_ANYTHING_RBRACE // INTERFACE java_indentifier LBRACE interface_member_declaration RBRACE
// can be anywhere
enum_declaration ::= ENUM_ANYTHING_LPAREN_ANYTHING_RPAREN // ENUM java_identifier (implements type_name_list)? LBRACE enum_constant (COMMA enum_constant)* (SEMICOLON class_body_declaration* )? RBRACE
// TODO unsupported
java_member_value_pairs_in_paren ::= JAVA_IN_PAREN // LPAREN member_value_pairs? RPAREN class_body ::= CLASS_BODY_UNSUPPORTED
...@@ -30,10 +30,10 @@ MultiLineComment = "/*" [^*]+ [*]+([^*/][^*]*[*]+)*[/] ...@@ -30,10 +30,10 @@ MultiLineComment = "/*" [^*]+ [*]+([^*/][^*]*[*]+)*[/]
NotParenthesis = [^{}]+ NotParenthesis = [^{}]+
// from jjt // from jjt
// DecimalLiteral = [1-9] [0-9]* DecimalLiteral = [1-9] [0-9]*
// HexLiteral = 0 [xX] [0-9a-fA-F]+ HexLiteral = 0 [xX] [0-9a-fA-F]+
// OctalLiteral = 0 [0-7]* OctalLiteral = 0 [0-7]*
// IntegerLiteral = ( {DecimalLiteral} | {HexLiteral} | {OctalLiteral} ) [lL]? IntegerLiteral = ( {DecimalLiteral} | {HexLiteral} | {OctalLiteral} ) [lL]?
Exponent = [eE] [+-]? [0-9]+ Exponent = [eE] [+-]? [0-9]+
FloatingPointLiteral = [0-9]+ "." [0-9]* {Exponent}? [fFdD]? FloatingPointLiteral = [0-9]+ "." [0-9]* {Exponent}? [fFdD]?
...@@ -93,9 +93,9 @@ Identifier = [:jletter:] [:jletterdigit:]* ...@@ -93,9 +93,9 @@ Identifier = [:jletter:] [:jletterdigit:]*
//"do" { return JastAddAspectTypes.DO; } //"do" { return JastAddAspectTypes.DO; }
"double" { return JastAddAspectTypes.DOUBLE; } "double" { return JastAddAspectTypes.DOUBLE; }
//"else" { return JastAddAspectTypes.ELSE; } //"else" { return JastAddAspectTypes.ELSE; }
"enum" { return JastAddAspectTypes.ENUM; } //"enum" { return JastAddAspectTypes.ENUM; }
"extends" { return JastAddAspectTypes.EXTENDS; } "extends" { return JastAddAspectTypes.EXTENDS; }
//"false" { return JastAddAspectTypes.FALSE; } "false" { return JastAddAspectTypes.FALSE; }
"final" { return JastAddAspectTypes.FINAL; } "final" { return JastAddAspectTypes.FINAL; }
//"finally" { return JastAddAspectTypes.FINALLY; } //"finally" { return JastAddAspectTypes.FINALLY; }
"float" { return JastAddAspectTypes.FLOAT; } "float" { return JastAddAspectTypes.FLOAT; }
...@@ -104,13 +104,13 @@ Identifier = [:jletter:] [:jletterdigit:]* ...@@ -104,13 +104,13 @@ Identifier = [:jletter:] [:jletterdigit:]*
//"if" { return JastAddAspectTypes.IF; } //"if" { return JastAddAspectTypes.IF; }
"implements" { return JastAddAspectTypes.IMPLEMENTS; } "implements" { return JastAddAspectTypes.IMPLEMENTS; }
"import" { return JastAddAspectTypes.IMPORT; } "import" { return JastAddAspectTypes.IMPORT; }
//"instanceof" { return JastAddAspectTypes.INSTANCEOF; } "instanceof" { return JastAddAspectTypes.INSTANCEOF; }
"int" { return JastAddAspectTypes.INT; } "int" { return JastAddAspectTypes.INT; }
"interface" { return JastAddAspectTypes.INTERFACE; } "interface" { return JastAddAspectTypes.INTERFACE; }
"long" { return JastAddAspectTypes.LONG; } "long" { return JastAddAspectTypes.LONG; }
"native" { return JastAddAspectTypes.NATIVE; } "native" { return JastAddAspectTypes.NATIVE; }
//"new" { return JastAddAspectTypes.NEW; } //"new" { return JastAddAspectTypes.NEW; }
//"null" { return JastAddAspectTypes.NULL; } "null" { return JastAddAspectTypes.NULL; }
//"package" { return JastAddAspectTypes.PACKAGE; } //"package" { return JastAddAspectTypes.PACKAGE; }
"private" { return JastAddAspectTypes.PRIVATE; } "private" { return JastAddAspectTypes.PRIVATE; }
"protected" { return JastAddAspectTypes.PROTECTED; } "protected" { return JastAddAspectTypes.PROTECTED; }
...@@ -126,7 +126,7 @@ Identifier = [:jletter:] [:jletterdigit:]* ...@@ -126,7 +126,7 @@ Identifier = [:jletter:] [:jletterdigit:]*
//"throw" { return JastAddAspectTypes.THROW; } //"throw" { return JastAddAspectTypes.THROW; }
"throws" { return JastAddAspectTypes.THROWS; } "throws" { return JastAddAspectTypes.THROWS; }
"transient" { return JastAddAspectTypes.TRANSIENT; } "transient" { return JastAddAspectTypes.TRANSIENT; }
//"true" { return JastAddAspectTypes.TRUE; } "true" { return JastAddAspectTypes.TRUE; }
//"try" { return JastAddAspectTypes.TRY; } //"try" { return JastAddAspectTypes.TRY; }
"void" { return JastAddAspectTypes.VOID; } "void" { return JastAddAspectTypes.VOID; }
"volatile" { return JastAddAspectTypes.VOLATILE; } "volatile" { return JastAddAspectTypes.VOLATILE; }
...@@ -161,10 +161,10 @@ Identifier = [:jletter:] [:jletterdigit:]* ...@@ -161,10 +161,10 @@ Identifier = [:jletter:] [:jletterdigit:]*
<YYINITIAL, COLLECTION_DECL> { <YYINITIAL, COLLECTION_DECL> {
// LITERALS // LITERALS
//{IntegerLiteral} { return JastAddAspectTypes.INTEGER_LITERAL; } {IntegerLiteral} { return JastAddAspectTypes.INTEGER_LITERAL; }
//{FloatingPointLiteral} { return JastAddAspectTypes.FLOATING_POINT_LITERAL; } {FloatingPointLiteral} { return JastAddAspectTypes.FLOATING_POINT_LITERAL; }
//{CharacterLiteral} { return JastAddAspectTypes.CHARACTER_LITERAL; } {CharacterLiteral} { return JastAddAspectTypes.CHARACTER_LITERAL; }
//{StringLiteral} { return JastAddAspectTypes.STRING_LITERAL; } {StringLiteral} { return JastAddAspectTypes.STRING_LITERAL; }
// IDENTIFIERS // IDENTIFIERS
{Identifier} { return JastAddAspectTypes.IDENTIFIER; } {Identifier} { return JastAddAspectTypes.IDENTIFIER; }
...@@ -182,43 +182,43 @@ Identifier = [:jletter:] [:jletterdigit:]* ...@@ -182,43 +182,43 @@ Identifier = [:jletter:] [:jletterdigit:]*
"@" { return JastAddAspectTypes.AT; } "@" { return JastAddAspectTypes.AT; }
// OPERATORS // OPERATORS
//"=" { return JastAddAspectTypes.ASSIGN; } "=" { return JastAddAspectTypes.ASSIGN; }
"<" { return JastAddAspectTypes.LT; } "<" { return JastAddAspectTypes.LT; }
//"!" { return JastAddAspectTypes.BANG; } "!" { return JastAddAspectTypes.BANG; }
//"~" { return JastAddAspectTypes.TILDE; } "~" { return JastAddAspectTypes.TILDE; }
//"?" { return JastAddAspectTypes.HOOK; } "?" { return JastAddAspectTypes.HOOK; }
//":" { return JastAddAspectTypes.COLON; } ":" { return JastAddAspectTypes.COLON; }
//"==" { return JastAddAspectTypes.EQ; } "==" { return JastAddAspectTypes.EQ; }
//"<=" { return JastAddAspectTypes.LE; } "<=" { return JastAddAspectTypes.LE; }
//">=" { return JastAddAspectTypes.GE; } ">=" { return JastAddAspectTypes.GE; }
//"!=" { return JastAddAspectTypes.NE; } "!=" { return JastAddAspectTypes.NE; }
//"||" { return JastAddAspectTypes.SC_OR; } "||" { return JastAddAspectTypes.SC_OR; }
//"&&" { return JastAddAspectTypes.SC_AND; } "&&" { return JastAddAspectTypes.SC_AND; }
//"++" { return JastAddAspectTypes.INCR; } "++" { return JastAddAspectTypes.INCR; }
//"--" { return JastAddAspectTypes.DECR; } "--" { return JastAddAspectTypes.DECR; }
//"+" { return JastAddAspectTypes.PLUS; } "+" { return JastAddAspectTypes.PLUS; }
//"-" { return JastAddAspectTypes.MINUS; } "-" { return JastAddAspectTypes.MINUS; }
"*" { return JastAddAspectTypes.STAR; } "*" { return JastAddAspectTypes.STAR; }
//"/" { return JastAddAspectTypes.SLASH; } "/" { return JastAddAspectTypes.SLASH; }
//"&" { return JastAddAspectTypes.BIT_AND; } "&" { return JastAddAspectTypes.BIT_AND; }
//"|" { return JastAddAspectTypes.BIT_OR; } "|" { return JastAddAspectTypes.BIT_OR; }
//"^" { return JastAddAspectTypes.XOR; } "^" { return JastAddAspectTypes.XOR; }
//"%" { return JastAddAspectTypes.REM; } "%" { return JastAddAspectTypes.REM; }
//"<<" { return JastAddAspectTypes.LSHIFT; } "<<" { return JastAddAspectTypes.LSHIFT; }
//"+=" { return JastAddAspectTypes.PLUSASSIGN; } "+=" { return JastAddAspectTypes.PLUSASSIGN; }
//"-=" { return JastAddAspectTypes.MINUSASSIGN; } "-=" { return JastAddAspectTypes.MINUSASSIGN; }
//"*=" { return JastAddAspectTypes.STARASSIGN; } "*=" { return JastAddAspectTypes.STARASSIGN; }
//"/=" { return JastAddAspectTypes.SLASHASSIGN; } "/=" { return JastAddAspectTypes.SLASHASSIGN; }
//"&=" { return JastAddAspectTypes.ANDASSIGN; } "&=" { return JastAddAspectTypes.ANDASSIGN; }
//"|=" { return JastAddAspectTypes.ORASSIGN; } "|=" { return JastAddAspectTypes.ORASSIGN; }
//"^=" { return JastAddAspectTypes.XORASSIGN; } "^=" { return JastAddAspectTypes.XORASSIGN; }
//"%=" { return JastAddAspectTypes.REMASSIGN; } "%=" { return JastAddAspectTypes.REMASSIGN; }
//"<<=" { return JastAddAspectTypes.LSHIFTASSIGN; } "<<=" { return JastAddAspectTypes.LSHIFTASSIGN; }
//">>=" { return JastAddAspectTypes.RSIGNEDSHIFTASSIGN; } ">>=" { return JastAddAspectTypes.RSIGNEDSHIFTASSIGN; }
//">>>=" { return JastAddAspectTypes.RUNSIGNEDSHIFTASSIGN; } ">>>=" { return JastAddAspectTypes.RUNSIGNEDSHIFTASSIGN; }
//"..." { return JastAddAspectTypes.ELLIPSIS; } //"..." { return JastAddAspectTypes.ELLIPSIS; }
//"->" { return JastAddAspectTypes.ARROW; } "->" { return JastAddAspectTypes.ARROW; }
//"::" { return JastAddAspectTypes.DOUBLECOLON; } "::" { return JastAddAspectTypes.DOUBLECOLON; }
// TODO RUNSIGNEDSHIFT >>> and RSIGNEDSHIFT >> are not parsed // TODO RUNSIGNEDSHIFT >>> and RSIGNEDSHIFT >> are not parsed
......
...@@ -19,7 +19,8 @@ import org.jetbrains.annotations.NotNull; ...@@ -19,7 +19,8 @@ import org.jetbrains.annotations.NotNull;
public class JastAddAspectParserDefinition implements ParserDefinition { public class JastAddAspectParserDefinition implements ParserDefinition {
public static final TokenSet WHITE_SPACES = TokenSet.create(TokenType.WHITE_SPACE); public static final TokenSet WHITE_SPACES = TokenSet.create(TokenType.WHITE_SPACE);
public static final TokenSet COMMENTS = TokenSet.create(JastAddAspectTypes.COMMENT); public static final TokenSet COMMENTS = TokenSet.create(JastAddAspectTypes.SINGLE_LINE_COMMENT, JastAddAspectTypes.MULTI_LINE_COMMENT, JastAddAspectTypes.FORMAL_COMMENT);
public static final TokenSet STRING_LITERALS = TokenSet.create(JastAddAspectTypes.STRING_LITERAL);
public static final IFileElementType FILE = new IFileElementType(JastAddAspectLanguage.INSTANCE); public static final IFileElementType FILE = new IFileElementType(JastAddAspectLanguage.INSTANCE);
...@@ -44,7 +45,7 @@ public class JastAddAspectParserDefinition implements ParserDefinition { ...@@ -44,7 +45,7 @@ public class JastAddAspectParserDefinition implements ParserDefinition {
@NotNull @NotNull
@Override @Override
public TokenSet getStringLiteralElements() { public TokenSet getStringLiteralElements() {
return TokenSet.EMPTY; return STRING_LITERALS;
} }
@NotNull @NotNull
......
...@@ -6,7 +6,7 @@ import com.intellij.openapi.util.TextRange; ...@@ -6,7 +6,7 @@ import com.intellij.openapi.util.TextRange;
import com.intellij.psi.InjectedLanguagePlaces; import com.intellij.psi.InjectedLanguagePlaces;
import com.intellij.psi.LanguageInjector; import com.intellij.psi.LanguageInjector;
import com.intellij.psi.PsiLanguageInjectionHost; import com.intellij.psi.PsiLanguageInjectionHost;
import org.jastadd.tooling.aspect.psi.JastAddAspectClassBodyDeclarationInParen; import org.jastadd.tooling.aspect.psi.*;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
public class JavaBlockLanguageInjector implements LanguageInjector { public class JavaBlockLanguageInjector implements LanguageInjector {
...@@ -21,9 +21,23 @@ public class JavaBlockLanguageInjector implements LanguageInjector { ...@@ -21,9 +21,23 @@ public class JavaBlockLanguageInjector implements LanguageInjector {
*/ */
@Override @Override
public void getLanguagesToInject(@NotNull PsiLanguageInjectionHost host, @NotNull InjectedLanguagePlaces injectionPlacesRegistrar) { public void getLanguagesToInject(@NotNull PsiLanguageInjectionHost host, @NotNull InjectedLanguagePlaces injectionPlacesRegistrar) {
if (host.isValidHost() && host instanceof JastAddAspectClassBodyDeclarationInParen) { if (host.isValidHost()) {
System.out.println(host.getText()); if (host instanceof JastAddAspectExpressionInBrackets) {
// TODO
injectionPlacesRegistrar.addPlace(JavaLanguage.INSTANCE, new TextRange(0, host.getTextLength()), "class X { public void m(){", "}"); injectionPlacesRegistrar.addPlace(JavaLanguage.INSTANCE, new TextRange(0, host.getTextLength()), "class X { public void m(){", "}");
} else if (host instanceof JastAddAspectNormalAnnotation) {
// TODO
} else if (host instanceof JastAddAspectSingleMemberAnnotation) {
// TODO
} else if (host instanceof JastAddAspectClassDeclaration) {
// TODO
} else if (host instanceof JastAddAspectInterfaceDeclaration) {
// TODO
} else if (host instanceof JastAddAspectEnumDeclaration) {
// TODO
} else if (host instanceof JastAddAspectAnnotationTypeDeclaration) {
// TODO
}
} }
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment