Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- lexer grammar RubyLexer;
- /**
- TERMINALS
- */
- fragment ESCAPED_QUOTE : '\\"';
- fragment ESCAPED_SINGLEQUOTE : '\'';
- LITERAL : '"' ( ESCAPED_QUOTE | ~('\r') )*? '"' // war ~('\n'|'\r')
- | '\'' ( ESCAPED_SINGLEQUOTE | ~('\r') )*? '\''; // war ~('\n'|'\r')
- COMMA : ',';
- DOT : '.';
- SEMICOLON : ';';
- DCOLON : '::';
- COLON : ':';
- CRLF : '\r'? '\n';
- QM : '?' -> skip;
- CLASS: 'class';
- SELF: 'self';
- MODULE: 'module';
- //REQUIRE : 'require';
- END : 'end';
- DEF : 'def';
- RETURN : 'return';
- PIR : 'pir';
- INCLUDE : 'include';
- EXTEND : 'extend';
- PRIVATE : 'private';
- PROTECTED : 'protected';
- BEGIN : 'begin';
- RESCUE : 'rescue';
- RAISE : 'raise';
- ALIAS : 'alias';
- //IF_EXCEPT : 'if Rails.env.development' -> skip;
- IF: 'if';
- ELSE : 'else';
- ELSIF : 'elsif';
- UNLESS : 'unless';
- WHILE : 'while';
- RETRY : 'retry';
- BREAK : 'break';
- FOR : 'for';
- EACH : 'each';
- DO : 'do';
- IN : 'in';
- FORM_FOR: 'form_for';
- TRUE : 'true';
- FALSE : 'false';
- // TODO a lot of operators are still missing
- PLUS : '+';
- MINUS : '-';
- MUL : '*';
- DIV : '/';
- MOD : '%';
- EXP : '**';
- EQUAL : '==';
- NOT_EQUAL : '!=';
- GREATER : '>';
- LESS : '<';
- SPACESHIP : '<=>';
- LESS_EQUAL : '<=';
- GREATER_EQUAL : '>=';
- ASSIGN : '=';
- PLUS_ASSIGN : '+=';
- MINUS_ASSIGN : '-=';
- MUL_ASSIGN : '*=';
- DIV_ASSIGN : '/=';
- MOD_ASSIGN : '%=';
- EXP_ASSIGN : '**=';
- OR_ASSIGN : '||=';
- BIT_AND : '&';
- BIT_OR : '|';
- BIT_XOR : '^';
- BIT_NOT : '~';
- BIT_SHL : '<<';
- BIT_SHR : '>>';
- HASH : '=>';
- LAMBDA : '->';
- LAMBDA_WORD : 'lambda';
- AND : 'and' | '&&';
- OR : 'or' | '||';
- NOT : 'not' | '!';
- LEFT_RBRACKET : '(';
- RIGHT_RBRACKET : ')';
- LEFT_SBRACKET : '[';
- RIGHT_SBRACKET : ']';
- LEFT_CBRACKET : '{';
- RIGHT_CBRACKET : '}';
- NIL : 'nil' | 'NIL';
- //SKIP Scenarios
- SL_COMMENT : ('#' ~('\r' | '\n')* '\r'? '\n') -> skip;
- ML_COMMENT : ('=begin' .*? '=end' '\r'? '\n') -> skip;
- //CALL_IF_ENV : IF 'Rails' DOT 'env' DOT 'development?' -> skip ;
- WS : (' '|'\t')+ -> skip; // '\n' war nicht da
- SQL : 'SQL';
- STRING : 'STRING';
- EOS : 'EOS';
- WASNUN : 'WASNUN';
- SQL_INLINE : BIT_SHL MINUS SQL .*? SQL CRLF -> skip; // <<-SQL
- HTML_INLINE : BIT_SHL MINUS STRING .*? STRING -> skip;
- STRING_LITERAL : MOD ONE_CHAR LEFT_RBRACKET .*? RIGHT_RBRACKET -> skip;
- WASNUN_INLINE : BIT_SHL MINUS WASNUN .*? WASNUN -> skip;
- DEBUG : 'debug';
- INT : [0-9]+;
- FLOAT : [0-9]*'.'[0-9]+;
- ID_CONSTANT : [A-Z_]+;
- ID_CLASS_VAR : '@@'ID ;
- ID_INSTANCE_VAR : '@'ID;
- ID_CLASS_CALL : [A-Z_][a-zA-Z0-9_]*;
- ID : [a-zA-Z_][a-zA-Z0-9_]*;
- ID_GLOBAL : '$'ID;
- //ID_FUNCTION_BOOL : ID QM;
- ID_FUNCTION : ID[?];
- MAIL_REGEX: '/\\A[\\w+\\-.]+@[a-z\\d\\-]+(\\.[a-z]+)*\\.[a-z]+\\z/i';
- //REGEX: ( DIV | ('i') | ('@') | ('[') | (']') | ('+') | ('.') | ('*') | ('-') | ('\\') | ('(') | (')') |('A') |('w') |('a') |('z') |('Z')
- //|('w')|('a'));
- ONE_CHAR : [a-zA-Z];
- PERCENT_EXPR: MOD ONE_CHAR LEFT_RBRACKET ID RIGHT_RBRACKET;
- //ID_CLASS : ID; VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z/i
- //ID_SUPERCLASS : ID;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement