Skip to content
Snippets Groups Projects
Select Git revision
  • 63f0177abe6d4d50fa5c7f34dcc505c59846f706
  • develop default protected
  • support-for-intellij-25.1
  • chore/support-for-intellijj-2024.3
  • feature/references
  • feature/commenter-for-aspect-files
  • feature/link-generated-code-and-definition
  • main
  • legacy
  • v0.3.5 protected
  • v0.3.4 protected
  • v0.3.3 protected
  • v0.3.2 protected
  • v0.3.1 protected
  • v0.3.0 protected
  • v0.2.0 protected
16 results

JastAddAspect.flex

Blame
  • JastAddAspect.flex 12.72 KiB
    package org.jastadd.tooling.aspect.lexer;
    
    import com.intellij.lexer.FlexLexer;
    import com.intellij.psi.tree.IElementType;
    import org.jastadd.tooling.aspect.psi.JastAddAspectTypes;
    import com.intellij.psi.TokenType;
    
    %%
    
    %class JastAddAspectLexer
    %implements FlexLexer
    %unicode
    %function advance
    %type IElementType
    %eof{  return;
    %eof}
    
    %{
      private int counter = 0;
    %}
    
    WhiteSpace          = [ \t\n\r\f]
    
    // TODO what is /**/ in Java? Is this caputered here?
    SingleLineComment   = "//"  [^\n\r]* (\n | \r | \r\n)
    FormalComment       = "/**" [^*]* [*]+([^*/][^*]*[*]+)*[/]
    MultiLineComment    = "/*"  [^*]+ [*]+([^*/][^*]*[*]+)*[/]
    
    
    NotBrace          = ( [^{}/]+ | [/][^{}/*] )*
    
    // from jjt
    DecimalLiteral    = [1-9] [0-9]*
    HexLiteral        = 0 [xX] [0-9a-fA-F]+
    OctalLiteral      = 0 [0-7]*
    IntegerLiteral    = ( {DecimalLiteral} | {HexLiteral} | {OctalLiteral} ) [lL]?
    
    Exponent             = [eE] [+-]? [0-9]+
    FloatingPointLiteral = [0-9]+ "." [0-9]* {Exponent}? [fFdD]?
                         |        "." [0-9]+ {Exponent}? [fFdD]?
                         |            [0-9]+ {Exponent}  [fFdD]?
                         |            [0-9]+ {Exponent}? [fFdD]
    
    CharacterLiteral     = '  ( [^'\\\n\r]  | ( \\ ( [ntbrf\\'\"] | [0-7][0-7?] | [0-3][0-7][0-7] ) ) ) '
    StringLiteral        = \" ( [^\"\\\n\r] | ( \\ ( [ntbrf\\'\"] | [0-7][0-7?] | [0-3][0-7][0-7] ) ) )* \"
    
    Identifier           = [:jletter:] [:jletterdigit:]*
    
    %state JASTADD
    %state EXPECT_CLASS_ANYTHING_LBRACE_ANYTHING_RBRACE
    %state CLASS_ANYTHING_LBRACE_ANYTHING_RBRACE
    %state LBRACE_ANYTHING_RBRACE
    %state JAVA_IN_PAREN
    %state COLLECTION_DECL
    %state ATTRIBUTE_DEFINITION
    %state LPAREN_ANYTHING_RPAREN
    
    %%
    
    <YYINITIAL,COLLECTION_DECL,ATTRIBUTE_DEFINITION> {
      {WhiteSpace}+                  { return TokenType.WHITE_SPACE; }
      {SingleLineComment}            { return JastAddAspectTypes.SINGLE_LINE_COMMENT; }
      {FormalComment}                { return JastAddAspectTypes.FORMAL_COMMENT; }
      {MultiLineComment}             { return JastAddAspectTypes.MULTI_LINE_COMMENT; }
    //  "EQ"                           { yybegin(YYINITIAL); return JastAddAspectTypes.EQ; }
    //  "{"                            { yybegin(JAVA); counter = 1;  }
      "class"                        { yybegin(EXPECT_CLASS_ANYTHING_LBRACE_ANYTHING_RBRACE); }
    }
    
    <EXPECT_CLASS_ANYTHING_LBRACE_ANYTHING_RBRACE> {