diff --git a/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr4_fixed_grammars/Arithmetic.g4 b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr4_fixed_grammars/Arithmetic.g4 new file mode 100644 index 0000000000..1ff5215c3a --- /dev/null +++ b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr4_fixed_grammars/Arithmetic.g4 @@ -0,0 +1,10 @@ +grammar Arithmetic; +prog : expr EOF ; +expr + : expr op=('*'|'/') expr # MulDiv + | expr op=('+'|'-') expr # AddSub + | INT # Int + | '(' expr ')' # Parens + ; +INT: [0-9]+; +WS: [ \t\r\n]+ -> skip; \ No newline at end of file diff --git a/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr4_fixed_grammars/CSVFlexible.g4 b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr4_fixed_grammars/CSVFlexible.g4 new file mode 100644 index 0000000000..0be6d36e86 --- /dev/null +++ b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr4_fixed_grammars/CSVFlexible.g4 @@ -0,0 +1,8 @@ +grammar CSVFlexible; +file : row+ EOF ; +row : field (',' field)* NEWLINE ; +field : TEXT | STRING ; +TEXT : ~[\r\n,"]+ ; +STRING : '"' ('""'|~'"')* '"' ; +NEWLINE : ('\r'? '\n')+ ; +WS : [ \t]+ -> skip ; \ No newline at end of file diff --git a/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr4_fixed_grammars/JSONMini.g4 b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr4_fixed_grammars/JSONMini.g4 new file mode 100644 index 0000000000..bd48f6677a --- /dev/null +++ b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr4_fixed_grammars/JSONMini.g4 @@ -0,0 +1,19 @@ +grammar JSONMini; +json : value EOF ; +value + : STRING + | NUMBER + | object + | array + | 'true' + | 'false' + | 'null' + ; +object : '{' pair (',' pair)* '}' | '{' '}' ; +pair : STRING ':' value ; +array : '[' value (',' value)* ']' | '[' ']' ; +STRING : '"' (~['"'\\] | '\\' .)* '"' ; +NUMBER : '-'? INT ('.' [0-9]+)? EXP? ; +fragment INT : '0' | [1-9] [0-9]* ; +fragment EXP : [Ee] [+-]? [0-9]+ ; +WS : [ \t\r\n]+ -> skip ; \ No newline at end of file diff --git a/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr4_fixed_grammars/MiniConfig.g4 b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr4_fixed_grammars/MiniConfig.g4 new file mode 100644 index 0000000000..989671be9a --- /dev/null +++ b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr4_fixed_grammars/MiniConfig.g4 @@ -0,0 +1,8 @@ +grammar MiniConfig; +config : (pair | section)* EOF ; +section : '[' NAME ']' (pair)* ; +pair : NAME '=' VALUE NEWLINE? ; +NAME : [a-zA-Z_][a-zA-Z0-9_]* ; +VALUE : ~[\r\n]+ ; +NEWLINE : ('\r'? '\n')+ ; +WS : [ \t]+ -> skip ; \ No newline at end of file diff --git a/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr4_fixed_grammars/MiniMarkdown.g4 b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr4_fixed_grammars/MiniMarkdown.g4 new file mode 100644 index 0000000000..b00c2ea572 --- /dev/null +++ b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr4_fixed_grammars/MiniMarkdown.g4 @@ -0,0 +1,13 @@ +grammar MiniMarkdown; +doc : element+ EOF ; +element + : heading + | bold + | text + ; +heading : '#' WS? TEXT NEWLINE ; +bold : '**' TEXT '**' ; +text : TEXT ; +TEXT : ~[\r\n#*]+ ; +NEWLINE : ('\r'? '\n')+ ; +WS : [ \t]+ -> skip ; \ No newline at end of file diff --git a/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr4_fixed_grammars/MiniQuery.g4 b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr4_fixed_grammars/MiniQuery.g4 new file mode 100644 index 0000000000..1fb86c29e8 --- /dev/null +++ b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr4_fixed_grammars/MiniQuery.g4 @@ -0,0 +1,19 @@ +grammar MiniQuery; +query : 'SELECT' columns 'FROM' table ('WHERE' condition)? EOF ; +columns : '*' | ID (',' ID)* ; +table : ID ; +condition : expr ; +expr + : ID OP value + | expr AND expr + | expr OR expr + | '(' expr ')' + ; +value : STRING | NUMBER ; +ID : [a-zA-Z_][a-zA-Z0-9_]* ; +STRING : '\'' (~['\\\r\n])* '\'' ; +NUMBER : [0-9]+ ; +AND : 'AND' ; +OR : 'OR' ; +OP : '=' | '<>' | '<' | '>' | '<=' | '>=' ; +WS : [ \t\r\n]+ -> skip ; \ No newline at end of file diff --git a/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr_grammars/Arithmetic.g4 b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr_grammars/Arithmetic.g4 new file mode 100644 index 0000000000..55a6946130 --- /dev/null +++ b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr_grammars/Arithmetic.g4 @@ -0,0 +1,7 @@ +grammar Arithmetic; +expr: expr op=('*'|'/') expr # MulDiv + | expr op=('+'|'-') expr # AddSub + | INT # Int + | '(' expr ')' # Parens ; +INT: [0-9]+; +WS: [ \t\r\n]+ -> skip; diff --git a/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr_grammars/BooleanExpr.g4 b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr_grammars/BooleanExpr.g4 new file mode 100644 index 0000000000..6d6c211d72 --- /dev/null +++ b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr_grammars/BooleanExpr.g4 @@ -0,0 +1,11 @@ +grammar BooleanExpr; +expr: expr AND expr + | expr OR expr + | NOT expr + | '(' expr ')' + | BOOL ; +AND: 'AND'; +OR: 'OR'; +NOT: 'NOT'; +BOOL: 'TRUE' | 'FALSE'; +WS: [ \t\r\n]+ -> skip; diff --git a/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr_grammars/CSVFlexible.g4 b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr_grammars/CSVFlexible.g4 new file mode 100644 index 0000000000..2e8cd7abc0 --- /dev/null +++ b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr_grammars/CSVFlexible.g4 @@ -0,0 +1,8 @@ +grammar CSVFlexible; +file: row+ ; +row: value (',' value)* NEWLINE ; +value: QUOTED | TEXT? ; +TEXT: ~[,"\r\n]+ ; +QUOTED: '"' (~["\r\n] | '""')* '"' ; +NEWLINE: '\r'? '\n' ; +WS: [ \t]+ -> skip ; diff --git a/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr_grammars/JSONMini.g4 b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr_grammars/JSONMini.g4 new file mode 100644 index 0000000000..b1a66a665b --- /dev/null +++ b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr_grammars/JSONMini.g4 @@ -0,0 +1,10 @@ +grammar JSONMini; +json: value ; +value: STRING | NUMBER | obj | array | 'true' | 'false' | 'null' ; +obj: '{' pair (',' pair)* '}' ; +pair: STRING ':' value ; +array: '[' value (',' value)* ']' ; +STRING: '"' (~["\\] | '\\' .)* '"' ; +NUMBER: '-'? INT ('.' [0-9]+)? ; +fragment INT: '0' | [1-9][0-9]* ; +WS: [ \t\r\n]+ -> skip ; diff --git a/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr_grammars/MiniConfig.g4 b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr_grammars/MiniConfig.g4 new file mode 100644 index 0000000000..fcb87c589e --- /dev/null +++ b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr_grammars/MiniConfig.g4 @@ -0,0 +1,8 @@ +grammar MiniConfig; +config: (section | pair)* EOF; +section: '[' NAME ']' ; +pair: NAME '=' VALUE ; +NAME: [a-zA-Z_][a-zA-Z0-9_]* ; +VALUE: ~[\r\n#;]+ ; +WS: [ \t\r\n]+ -> skip ; +COMMENT: ('#'|';').*? -> skip ; diff --git a/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr_grammars/MiniMarkdown.g4 b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr_grammars/MiniMarkdown.g4 new file mode 100644 index 0000000000..3817ef7d53 --- /dev/null +++ b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr_grammars/MiniMarkdown.g4 @@ -0,0 +1,8 @@ +grammar MiniMarkdown; +doc: (heading | bold | text)+ ; +heading: '#' WS? TEXT NL ; +bold: '**' TEXT '**' ; +text: TEXT NL? ; +TEXT: ~[\r\n#*]+ ; +WS: [ \t]+ -> skip ; +NL: '\r'? '\n' ; diff --git a/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr_grammars/MiniQuery.g4 b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr_grammars/MiniQuery.g4 new file mode 100644 index 0000000000..811dcfe57a --- /dev/null +++ b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr_grammars/MiniQuery.g4 @@ -0,0 +1,12 @@ +grammar MiniQuery; +query: 'SELECT' columns 'FROM' table ('WHERE' condition)? EOF ; +columns: '*' | column (',' column)* ; +column: ID ; +table: ID ; +condition: column op value ; +op: '=' | '<' | '>' ; +value: STRING | NUMBER ; +ID: [a-zA-Z_][a-zA-Z0-9_]* ; +STRING: '\'' (~['\r\n])* '\'' ; +NUMBER: [0-9]+ ; +WS: [ \t\r\n]+ -> skip ; diff --git a/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr_grammars/UnitExpr.g4 b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr_grammars/UnitExpr.g4 new file mode 100644 index 0000000000..cabe063ee3 --- /dev/null +++ b/runtime-testsuite/test/org/antlr/v4/test/runtime/antlr_grammars/UnitExpr.g4 @@ -0,0 +1,5 @@ +grammar UnitExpr; +expr: NUMBER UNIT ; +NUMBER: [0-9]+ ('.' [0-9]+)? ; +UNIT: [a-zA-Z/_]+ ; +WS: [ \t\r\n]+ -> skip ; diff --git a/tool/resources/org/antlr/v4/tool/templates/codegen/Cpp/Cpp.stg b/tool/resources/org/antlr/v4/tool/templates/codegen/Cpp/Cpp.stg index e557fc811d..f1cc57f955 100644 --- a/tool/resources/org/antlr/v4/tool/templates/codegen/Cpp/Cpp.stg +++ b/tool/resources/org/antlr/v4/tool/templates/codegen/Cpp/Cpp.stg @@ -272,13 +272,13 @@ void ::Action( *context, size_t actio >> RuleSempredFunctionHeader(r, actions) ::= << -bool Sempred( *_localctx, size_t predicateIndex); +bool Sempred([[maybe_unused]] *_localctx, size_t predicateIndex); >> RuleSempredFunction(r, actions) ::= << -bool ::Sempred( *_localctx, size_t predicateIndex) { +bool ::Sempred([[maybe_unused]] *_localctx, size_t predicateIndex) { switch (predicateIndex) { : return }; separator=";\n">;