Skip to content

Commit

Permalink
Refactor grammar and parser class names
Browse files Browse the repository at this point in the history
  • Loading branch information
bdw429s committed Mar 25, 2024
1 parent 7b1b0c1 commit 8037850
Show file tree
Hide file tree
Showing 35 changed files with 554 additions and 1,020 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
parser grammar CFParser;
parser grammar BaseScriptGrammar;

options {
tokenVocab = CFLexer;
tokenVocab = BaseScriptLexer;
}

@members {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
lexer grammar CFLexer;
lexer grammar BaseScriptLexer;

options {
caseInsensitive = true;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
parser grammar CFMLParser;
parser grammar BaseTemplateGrammar;

options {
tokenVocab = CFMLLexer;
tokenVocab = CFTemplateLexer;
}

// Top-level template rule. Consists of component or interface or statements.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
lexer grammar CFMLLexer;
lexer grammar BaseTemplateLexer;

options {
caseInsensitive = true;
Expand Down
7 changes: 7 additions & 0 deletions src/main/antlr/BoxScriptGrammar.g4
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
parser grammar BoxScriptGrammar;

options {
tokenVocab = BoxScriptLexer;
}

import BaseScriptGrammar;
209 changes: 3 additions & 206 deletions src/main/antlr/BoxScriptLexer.g4
Original file line number Diff line number Diff line change
@@ -1,210 +1,7 @@
lexer grammar BoxScriptLexer;

lexer grammar BoxScriptLexer;

options {
caseInsensitive = true;
caseInsensitive = true;
}

/**
* DEFAULT MODE
* https://github.com/antlr/antlr4/blob/master/doc/lexer-rules.md#lexical-modes
*/
ABSTRACT : 'ABSTRACT';
ABORT : 'ABORT';
ADMIN : 'ADMIN';
ANY : 'ANY';
APPLICATION : 'APPLICATION';
ARGUMENTS : 'ARGUMENTS';
ARRAY : 'ARRAY';
ASSERT : 'ASSERT';
BOOLEAN : 'BOOLEAN';
BREAK : 'BREAK';
CASE : 'CASE';
CATCH : 'CATCH';
CLASS : 'CLASS';
COMPONENT : 'COMPONENT';
CONTAIN : 'CONTAIN';
CONTAINS : 'CONTAINS';
CONTINUE : 'CONTINUE';
DEFAULT : 'DEFAULT';
DOES : 'DOES';
DO : 'DO';
EXTENDS : 'EXTENDS';
ELSE : 'ELSE';
ELIF : 'ELIF';
FALSE : 'FALSE';
FINALLY : 'FINALLY';
FOR : 'FOR';
FUNCTION : 'FUNCTION';
IF : 'IF';
IN : 'IN';
IMPLEMENTS : 'IMPLEMENTS';
IMPORT : 'IMPORT';
INCLUDE : 'INCLUDE';
INIT : 'INIT';
INTERFACE : 'INTERFACE';
INSTANCEOF : 'INSTANCEOF';
IS : 'IS';
JAVA : 'JAVA';
LOCAL : 'LOCAL';
LOCK : 'LOCK';
MOD : 'MOD';
NEW : 'NEW';
NUMERIC : 'NUMERIC';
PACKAGE : 'PACKAGE';
PARAM : 'PARAM';
PRIVATE : 'PRIVATE';
PROPERTY : 'PROPERTY';
PUBLIC : 'PUBLIC';
QUERY : 'QUERY';
REMOTE : 'REMOTE';
REQUIRED : 'REQUIRED';
REQUEST : 'REQUEST';
RETURN : 'RETURN';
RETHROW : 'RETHROW';
SAVECONTENT : 'SAVECONTENT';
SETTING : 'SETTING';
STATIC : 'STATIC';
STRING : 'STRING';
STRUCT : 'STRUCT';
SWITCH : 'SWITCH';
THIS : 'THIS';
THREAD : 'THREAD';
THROW : 'THROW';
TYPE : 'TYPE';
TRUE : 'TRUE';
TRY : 'TRY';
VAR : 'VAR';
VARIABLES : 'VARIABLES';
WHEN : 'WHEN';
WHILE : 'WHILE';
XOR : 'XOR';

AMPERSAND : '&';
AND : '&&' | 'AND';
ARROW : '->';
BACKSLASH : '\\';
COMMA : ',';
COLON : ':';
COLONCOLON : '::';
DOT : '.';
ELVIS : '?:';
EQUAL : '=';
EQ : '==' | 'EQ';
GT : '>' | 'GT';
GTE : '>=' | 'GTE';
LBRACE : '{';
RBRACE : '}';
LPAREN : '(';
RPAREN : ')';
LBRACKET : '[';
RBRACKET : ']';
ARROW_RIGHT : '=>';
LT : '<' | 'LT';
LTE : '<=' | 'LTE';
MINUS : '-';
MINUSMINUS : '--';
NEQ : '!=' | 'NEQ' | '<>';
NOT : '!' | 'NOT';
OR : '||' | 'OR';
PERCENT : '%';
POWER : '^';
QM : '?';
SEMICOLON : ';';
SLASH : '/';
STAR : '*';
CONCATEQUAL : '&=';
PLUSEQUAL : '+=';
MINUSEQUAL : '-=';
STAREQUAL : '*=';
SLASHEQUAL : '/=';
MODEQUAL : '%=';
PLUS : '+';
PLUSPLUS : '++';
TEQ : '===';




LCFTAG : '<' CFTAG '>' ;
RCFTAG : '</' CFTAG '>' ;
fragment CFTAG : 'cfscript' ;



ICHAR_1 : '#' {_modeStack.contains(hashMode)}? -> type(ICHAR),popMode,popMode;
ICHAR : '#';

WS : (' ' | '\t' | '\f' )+ -> skip;
NEWLINE : ('\n' | '\r' )+
(' ' | '\t' | '\f' | '\n' | '\r' )* -> channel(HIDDEN);
MULTILINE_COMMENT
: '/*' (.)*? '*/' -> channel(HIDDEN)
;

LINE_COMMENT :
'//'
( ~('\n'|'\r') )*
( '\n'|'\r'('\n')? )?
-> channel(HIDDEN) ;

OPEN_QUOTE : '"' -> pushMode(quotesMode);

OPEN_SINGLE : '\''-> type(OPEN_QUOTE),pushMode(squotesMode);

fragment DIGIT : [0-9];
fragment E_SIGN : [eE];
fragment E_NOTATION : E_SIGN [+-]? DIGIT+;
FLOAT_LITERAL
: DIGIT+ DOT DIGIT* (E_NOTATION)?
| DOT DIGIT+ (E_NOTATION)?
| DIGIT+ E_NOTATION
;

INTEGER_LITERAL : DIGIT+;
IDENTIFIER : [a-z_$]+ ( [_]+ | [a-z]+ | DIGIT)*;



mode squotesMode;
CLOSE_SQUOTE
: '\'' -> type(CLOSE_QUOTE),popMode
;

SHASHHASH
: '##'
;

SSTRING_LITERAL
: (~['#]+ | '\'\'' )+ -> type(STRING_LITERAL)
;

SHASH
: '#' -> type(ICHAR),pushMode(hashMode),pushMode(DEFAULT_MODE)
;


mode quotesMode;
CLOSE_QUOTE
: '"'
-> popMode
;

HASHHASH
: '##'
;
STRING_LITERAL
: (~["#]+ | '""' )+
;
HASH
: '#' -> type(ICHAR),pushMode(hashMode),pushMode(DEFAULT_MODE)
;
mode hashMode;
HANY
: [.]+ -> popMode,skip;
import BaseScriptLexer;
Loading

0 comments on commit 8037850

Please sign in to comment.