diff --git a/eo-parser/src/main/antlr4/org/eolang/parser/Program.g4 b/eo-parser/src/main/antlr4/org/eolang/parser/Program.g4 index 2cf0892be1..0368d09905 100644 --- a/eo-parser/src/main/antlr4/org/eolang/parser/Program.g4 +++ b/eo-parser/src/main/antlr4/org/eolang/parser/Program.g4 @@ -12,22 +12,22 @@ program license : - (COMMENT SINGLE_EOL)* - COMMENT DOUBLE_EOL + (COMMENT EOL)* + COMMENT EOP ; metas : - (META SINGLE_EOL)* - META DOUBLE_EOL + (META EOL)* + META EOP ; objects : ( - (COMMENT SINGLE_EOL)* + (COMMENT EOL)* object - (SINGLE_EOL | DOUBLE_EOL) + (EOL | EOP) )+ ; @@ -40,7 +40,7 @@ object ) tail? ( - SINGLE_EOL + EOL method htail? suffix? @@ -50,7 +50,7 @@ object abstraction : - (COMMENT SINGLE_EOL)* + (COMMENT EOL)* attributes ( (suffix (SPACE SLASH (NAME | QUESTION))?) @@ -89,9 +89,9 @@ label tail : - SINGLE_EOL + EOL TAB - (object (SINGLE_EOL | DOUBLE_EOL))+ + (object (EOL | EOP))+ UNTAB ; @@ -289,13 +289,13 @@ fragment LINEBREAK: ('\n' | '\r\n') ; -SINGLE_EOL +EOL : LINEBREAK INDENT* ; -DOUBLE_EOL +EOP : LINEBREAK LINEBREAK @@ -309,7 +309,7 @@ fragment LINE_BYTES : BYTE (MINUS BYTE)+; BYTES: EMPTY_BYTES | BYTE MINUS - | LINE_BYTES (MINUS SINGLE_EOL LINE_BYTES)*; + | LINE_BYTES (MINUS EOL LINE_BYTES)*; BOOL: 'TRUE' | 'FALSE'; STRING: '"' (~["\\\r\n] | ESCAPE_SEQUENCE)* '"'; diff --git a/eo-parser/src/main/java/org/eolang/parser/EoLexer.java b/eo-parser/src/main/java/org/eolang/parser/EoLexer.java index 77408eedff..a0995eae50 100644 --- a/eo-parser/src/main/java/org/eolang/parser/EoLexer.java +++ b/eo-parser/src/main/java/org/eolang/parser/EoLexer.java @@ -84,8 +84,8 @@ public Token nextToken() { */ private void lookAhead() { final Token token = super.nextToken(); - if (token.getType() == ProgramParser.SINGLE_EOL - || token.getType() == ProgramParser.DOUBLE_EOL) { + if (token.getType() == ProgramParser.EOL + || token.getType() == ProgramParser.EOP) { final int tabs = this.getText().replaceAll("[\r\n]", "").length() / 2; final int last = this.indent.peekLast(); final int shift = tabs - last; @@ -116,7 +116,7 @@ private void emitIndent(final int shift) { private void emitDedent(final int shift) { for (int idx = 0; idx < shift; ++idx) { this.emitToken(ProgramParser.UNTAB); - this.emitToken(ProgramParser.SINGLE_EOL); + this.emitToken(ProgramParser.EOL); } } diff --git a/eo-parser/src/test/resources/org/eolang/parser/ebnf/to-ebnf.xsl b/eo-parser/src/test/resources/org/eolang/parser/ebnf/to-ebnf.xsl index 28e9e8053b..0e56bdc291 100644 --- a/eo-parser/src/test/resources/org/eolang/parser/ebnf/to-ebnf.xsl +++ b/eo-parser/src/test/resources/org/eolang/parser/ebnf/to-ebnf.xsl @@ -26,23 +26,57 @@ SOFTWARE. - - - - + + + + + + + + + + + + + + + + + + + 'EOL' + + + 'EOP' + + + 'TAB' + + + 'UNTAB' + + + 'EOF' + + + < + + > + + + + % Use native-enbf LaTeX package to render this - + - < - - > + := \\ @@ -80,14 +114,24 @@ SOFTWARE. - ( - - - | - - - - ) + + + + | + + + + + + + + + + ( + + ) + + " @@ -95,26 +139,15 @@ SOFTWARE. " - / - / - - [ - - ] - - - - - - - / - - / - - + /[ + + \^{} + + + ]/ @@ -163,9 +196,7 @@ SOFTWARE. ' - < - - > +