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.
'
- <
-
- >
+