VikasGNS
VikasGNS

Reputation: 41

Trouble migrating antlr grammar

I have never used antlr in past, but now have to migrate grammar for an older version to the latest. I am trying to generate lexer and parser for c# target. I am stuck on migrating the start rule seen below.

grammar expr;

DQUOTE: '\"';
SQUOTE: '\'';
NEG   : '-';
PLUS  : '+';
OPEN  : '(';
CLOSE : ')';
PERIOD: '.';
COMMA : ',';

start returns [Expression value]
:

    expression EOF { $value = $expression.value; }

;

expression returns [Expression value]

  :

    literal                             { $value = $literal.value; } 
  | name                                { $value = $name.value; } 
  | functionCall                        { $value = $functionCall.value; }

;

I get the following error. syntax error:

mismatched input '[Expression value]' expecting ARG_ACTION while matching a rule.

I have already come across a post Troubles with returns declaration on the first parser rule in an ANTLR4 grammar. But Sam's response has not helped me figure out what I should be changing in my case.

I would appreciate if anyone could let me know the equivalent of the start rule in latest grammar.

Upvotes: 4

Views: 527

Answers (1)

user319799
user319799

Reputation:

The answer you linked appears to be applicable to your case. Move lexer rules (i.e. those starting with uppercase letters, DQUOTE and so on) after parser rules like start.

Upvotes: 2

Related Questions