How to split ANTLR4 parser grammar into separate files when there are cyclic references?
up vote
0
down vote
favorite
I am trying to make a language which grammar has cyclic references in parsing rules, like this:
statement : 'return' expression ';' ;
expression : ID | lambda ;
lambda : 'func' '{' statement '}' ;
It works when everything is in a single file, but I want to place everything about expressions in file Expressions.g4, statements in Statements.g4, and so on. When I split this grammar and add import
directives where needed, ANTLR complains about reference to undefined rule.
Of course, implicit tokens like ';'
are replaced by explicit after separating lexer and parser grammars, they are here to make this example clear.
antlr4
New contributor
add a comment |
up vote
0
down vote
favorite
I am trying to make a language which grammar has cyclic references in parsing rules, like this:
statement : 'return' expression ';' ;
expression : ID | lambda ;
lambda : 'func' '{' statement '}' ;
It works when everything is in a single file, but I want to place everything about expressions in file Expressions.g4, statements in Statements.g4, and so on. When I split this grammar and add import
directives where needed, ANTLR complains about reference to undefined rule.
Of course, implicit tokens like ';'
are replaced by explicit after separating lexer and parser grammars, they are here to make this example clear.
antlr4
New contributor
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I am trying to make a language which grammar has cyclic references in parsing rules, like this:
statement : 'return' expression ';' ;
expression : ID | lambda ;
lambda : 'func' '{' statement '}' ;
It works when everything is in a single file, but I want to place everything about expressions in file Expressions.g4, statements in Statements.g4, and so on. When I split this grammar and add import
directives where needed, ANTLR complains about reference to undefined rule.
Of course, implicit tokens like ';'
are replaced by explicit after separating lexer and parser grammars, they are here to make this example clear.
antlr4
New contributor
I am trying to make a language which grammar has cyclic references in parsing rules, like this:
statement : 'return' expression ';' ;
expression : ID | lambda ;
lambda : 'func' '{' statement '}' ;
It works when everything is in a single file, but I want to place everything about expressions in file Expressions.g4, statements in Statements.g4, and so on. When I split this grammar and add import
directives where needed, ANTLR complains about reference to undefined rule.
Of course, implicit tokens like ';'
are replaced by explicit after separating lexer and parser grammars, they are here to make this example clear.
antlr4
antlr4
New contributor
New contributor
New contributor
asked Nov 17 at 10:29
trollingchar
1013
1013
New contributor
New contributor
add a comment |
add a comment |
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
trollingchar is a new contributor. Be nice, and check out our Code of Conduct.
trollingchar is a new contributor. Be nice, and check out our Code of Conduct.
trollingchar is a new contributor. Be nice, and check out our Code of Conduct.
trollingchar is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53350339%2fhow-to-split-antlr4-parser-grammar-into-separate-files-when-there-are-cyclic-ref%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown