[antlr-interest] Bug or misunderstanding?: missing attribute access on rule scope

Kaleb Pederson kaleb.pederson at gmail.com
Fri Oct 16 12:21:33 PDT 2009


I'm getting an error that doesn't make any sense, either because I've
missed something fundamental or I've stumbled across a bug. I'm doing
some type checking within a tree parser.  I have a plusMinusExpression
which can either be a negation or a subtraction expression.  In order
to to check to see which it is, I have `if ($rhs != null)` within my
action.  That line, however, causes the following error:

SemanticChecker.g:163:3: missing attribute access on rule scope: rhs

The grammar fragment follows:

plusMinusExpression returns [Type type]
	:	^(PLUS lhs=baseExpression rhs=baseExpression) { /*...*/ }
		|	^(MINUS lhs=baseExpression rhs=baseExpression?)
		{
			typeChecker.assertIsNumericType($lhs.type);
			if ($rhs != null)
			{
				typeChecker.assertIsNumericType($rhs.type);
				typeChecker.assertEqualTypes($lhs.type, $rhs.type);
			}
			$type = $lhs.type;
		}
	;
Am I missing something fundamental or should this work? I tried
changing rhs to something unique throughout the application, but the
error persists.  I see the exact same behavior on both ANTLR-3.1 and
3.2.

Thanks.

--
Kaleb Pederson
Twitter - http://twitter.com/kalebpederson
Blog - http://kalebpederson.com


More information about the antlr-interest mailing list