Skip to content

Commit

Permalink
Remove erroneous lexing productions
Browse files Browse the repository at this point in the history
  • Loading branch information
KevinEady committed Feb 24, 2021
1 parent b1e8d2b commit 771f64f
Show file tree
Hide file tree
Showing 8 changed files with 1,133 additions and 1,208 deletions.
1,325 changes: 639 additions & 686 deletions lib/EscriptGrammar/EscriptLexer.cpp

Large diffs are not rendered by default.

19 changes: 9 additions & 10 deletions lib/EscriptGrammar/EscriptLexer.g4
Expand Up @@ -82,18 +82,16 @@ TOK_IN: 'in';

// Literals

DECIMAL_LITERAL: ('0' | [1-9] (Digits? | '_'+ Digits)) [lL]?;
HEX_LITERAL: '0' [xX] [0-9a-fA-F] ([0-9a-fA-F_]* [0-9a-fA-F])? [lL]?;
OCT_LITERAL: '0' '_'* [0-7] ([0-7_]* [0-7])? [lL]?;
BINARY_LITERAL: '0' [bB] [01] ([01_]* [01])? [lL]?;
DECIMAL_LITERAL: ('0' | [1-9] Digits?);
HEX_LITERAL: '0' [xX] [0-9a-fA-F] ([0-9a-fA-F]* [0-9a-fA-F])?;
OCT_LITERAL: '0' [0-7] ([0-7]* [0-7])?;
BINARY_LITERAL: '0' [bB] [01]+;

FLOAT_LITERAL: (Digits '.' Digits? | '.' Digits) ExponentPart? [fFdD]?
| Digits (ExponentPart [fFdD]? | [fFdD])
FLOAT_LITERAL: (Digits '.' Digits? | '.' Digits) ExponentPart?
| Digits ExponentPart
;

HEX_FLOAT_LITERAL: '0' [xX] (HexDigits '.'? | HexDigits? '.' HexDigits) [pP] [+-]? Digits [fFdD]?;

CHAR_LITERAL: '\'' (~['\\\r\n] | EscapeSequence) '\'';
HEX_FLOAT_LITERAL: '0' [xX] (HexDigits '.'? | HexDigits? '.' HexDigits);

STRING_LITERAL: '"' (~[\\"] | EscapeSequence)* '"';
Expand Down Expand Up @@ -167,7 +165,8 @@ fragment ExponentPart

// We currently allow all escapes, as they are checked during semantic analysis.
fragment EscapeSequence
: '\\' .
: '\\' [xX] HexDigit HexDigit
| '\\' .
;

fragment HexDigits
Expand Down
20 changes: 10 additions & 10 deletions lib/EscriptGrammar/EscriptLexer.h
Expand Up @@ -25,16 +25,16 @@ class EscriptLexer : public antlr4::Lexer {
OR_A = 54, OR_B = 55, BANG_A = 56, BANG_B = 57, BYREF = 58, UNUSED = 59,
TOK_ERROR = 60, HASH = 61, DICTIONARY = 62, STRUCT = 63, ARRAY = 64,
STACK = 65, TOK_IN = 66, DECIMAL_LITERAL = 67, HEX_LITERAL = 68, OCT_LITERAL = 69,
BINARY_LITERAL = 70, FLOAT_LITERAL = 71, HEX_FLOAT_LITERAL = 72, CHAR_LITERAL = 73,
STRING_LITERAL = 74, LPAREN = 75, RPAREN = 76, LBRACK = 77, RBRACK = 78,
LBRACE = 79, RBRACE = 80, DOT = 81, ARROW = 82, MUL = 83, DIV = 84,
MOD = 85, ADD = 86, SUB = 87, ADD_ASSIGN = 88, SUB_ASSIGN = 89, MUL_ASSIGN = 90,
DIV_ASSIGN = 91, MOD_ASSIGN = 92, LE = 93, LT = 94, GE = 95, GT = 96,
RSHIFT = 97, LSHIFT = 98, BITAND = 99, CARET = 100, BITOR = 101, NOTEQUAL_A = 102,
NOTEQUAL_B = 103, EQUAL_DEPRECATED = 104, EQUAL = 105, ASSIGN = 106,
ADDMEMBER = 107, DELMEMBER = 108, CHKMEMBER = 109, SEMI = 110, COMMA = 111,
TILDE = 112, AT = 113, COLONCOLON = 114, COLON = 115, INC = 116, DEC = 117,
ELVIS = 118, WS = 119, COMMENT = 120, LINE_COMMENT = 121, IDENTIFIER = 122
BINARY_LITERAL = 70, FLOAT_LITERAL = 71, HEX_FLOAT_LITERAL = 72, STRING_LITERAL = 73,
LPAREN = 74, RPAREN = 75, LBRACK = 76, RBRACK = 77, LBRACE = 78, RBRACE = 79,
DOT = 80, ARROW = 81, MUL = 82, DIV = 83, MOD = 84, ADD = 85, SUB = 86,
ADD_ASSIGN = 87, SUB_ASSIGN = 88, MUL_ASSIGN = 89, DIV_ASSIGN = 90,
MOD_ASSIGN = 91, LE = 92, LT = 93, GE = 94, GT = 95, RSHIFT = 96, LSHIFT = 97,
BITAND = 98, CARET = 99, BITOR = 100, NOTEQUAL_A = 101, NOTEQUAL_B = 102,
EQUAL_DEPRECATED = 103, EQUAL = 104, ASSIGN = 105, ADDMEMBER = 106,
DELMEMBER = 107, CHKMEMBER = 108, SEMI = 109, COMMA = 110, TILDE = 111,
AT = 112, COLONCOLON = 113, COLON = 114, INC = 115, DEC = 116, ELVIS = 117,
WS = 118, COMMENT = 119, LINE_COMMENT = 120, IDENTIFIER = 121
};

enum {
Expand Down
951 changes: 463 additions & 488 deletions lib/EscriptGrammar/EscriptParser.cpp

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion lib/EscriptGrammar/EscriptParser.g4
Expand Up @@ -374,7 +374,6 @@ arrayInitializer
literal
: integerLiteral
| floatLiteral
| CHAR_LITERAL
| STRING_LITERAL
;

Expand Down
21 changes: 10 additions & 11 deletions lib/EscriptGrammar/EscriptParser.h
Expand Up @@ -27,16 +27,16 @@ class EscriptParser : public antlr4::Parser {
OR_A = 54, OR_B = 55, BANG_A = 56, BANG_B = 57, BYREF = 58, UNUSED = 59,
TOK_ERROR = 60, HASH = 61, DICTIONARY = 62, STRUCT = 63, ARRAY = 64,
STACK = 65, TOK_IN = 66, DECIMAL_LITERAL = 67, HEX_LITERAL = 68, OCT_LITERAL = 69,
BINARY_LITERAL = 70, FLOAT_LITERAL = 71, HEX_FLOAT_LITERAL = 72, CHAR_LITERAL = 73,
STRING_LITERAL = 74, LPAREN = 75, RPAREN = 76, LBRACK = 77, RBRACK = 78,
LBRACE = 79, RBRACE = 80, DOT = 81, ARROW = 82, MUL = 83, DIV = 84,
MOD = 85, ADD = 86, SUB = 87, ADD_ASSIGN = 88, SUB_ASSIGN = 89, MUL_ASSIGN = 90,
DIV_ASSIGN = 91, MOD_ASSIGN = 92, LE = 93, LT = 94, GE = 95, GT = 96,
RSHIFT = 97, LSHIFT = 98, BITAND = 99, CARET = 100, BITOR = 101, NOTEQUAL_A = 102,
NOTEQUAL_B = 103, EQUAL_DEPRECATED = 104, EQUAL = 105, ASSIGN = 106,
ADDMEMBER = 107, DELMEMBER = 108, CHKMEMBER = 109, SEMI = 110, COMMA = 111,
TILDE = 112, AT = 113, COLONCOLON = 114, COLON = 115, INC = 116, DEC = 117,
ELVIS = 118, WS = 119, COMMENT = 120, LINE_COMMENT = 121, IDENTIFIER = 122
BINARY_LITERAL = 70, FLOAT_LITERAL = 71, HEX_FLOAT_LITERAL = 72, STRING_LITERAL = 73,
LPAREN = 74, RPAREN = 75, LBRACK = 76, RBRACK = 77, LBRACE = 78, RBRACE = 79,
DOT = 80, ARROW = 81, MUL = 82, DIV = 83, MOD = 84, ADD = 85, SUB = 86,
ADD_ASSIGN = 87, SUB_ASSIGN = 88, MUL_ASSIGN = 89, DIV_ASSIGN = 90,
MOD_ASSIGN = 91, LE = 92, LT = 93, GE = 94, GT = 95, RSHIFT = 96, LSHIFT = 97,
BITAND = 98, CARET = 99, BITOR = 100, NOTEQUAL_A = 101, NOTEQUAL_B = 102,
EQUAL_DEPRECATED = 103, EQUAL = 104, ASSIGN = 105, ADDMEMBER = 106,
DELMEMBER = 107, CHKMEMBER = 108, SEMI = 109, COMMA = 110, TILDE = 111,
AT = 112, COLONCOLON = 113, COLON = 114, INC = 115, DEC = 116, ELVIS = 117,
WS = 118, COMMENT = 119, LINE_COMMENT = 120, IDENTIFIER = 121
};

enum {
Expand Down Expand Up @@ -1490,7 +1490,6 @@ class EscriptParser : public antlr4::Parser {
virtual size_t getRuleIndex() const override;
IntegerLiteralContext *integerLiteral();
FloatLiteralContext *floatLiteral();
antlr4::tree::TerminalNode *CHAR_LITERAL();
antlr4::tree::TerminalNode *STRING_LITERAL();

virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
Expand Down
2 changes: 1 addition & 1 deletion testsuite/escript/bug/bug.err2
@@ -1 +1 @@
bug.src:4:20: error: extraneous input '4' expecting ')'
bug.src:4:17: error: missing ';' at '('
2 changes: 1 addition & 1 deletion testsuite/escript/bug/crash001.err2
@@ -1 +1 @@
crash001.inc:3:34: error: extraneous input ',' expecting {'!', 'not', 'error', 'dictionary', 'struct', 'array', DECIMAL_LITERAL, HEX_LITERAL, OCT_LITERAL, BINARY_LITERAL, FLOAT_LITERAL, HEX_FLOAT_LITERAL, CHAR_LITERAL, STRING_LITERAL, '(', '{', '+', '-', '~', '@', '++', '--', IDENTIFIER}
crash001.inc:3:24: error: missing ';' at '{'

0 comments on commit 771f64f

Please sign in to comment.