SYNOPSIS

Compile it with

eyapp -b '' Cplusplus2.eyp

Run it with:

./Cplusplus2.pm -t

try with inputs:

int (x) = 2;
int (x) + 2;

the result will be the generated abstract sytax tree

C++ Ambiguities

This grammar models a problematic part of the C++ grammar—the ambiguity between certain declarations and statements. For example,

int (x) = y+z;

parses as either an expr or a stmt.

Eyapp detects this as a reduce/reduce conflict:

  State 17 contains 1 reduce/reduce conflict

  State 17:

	expr -> ID .	(Rule 5)
	declarator -> ID .	(Rule 11)

	')'	[reduce using rule 11 (declarator)]
	$default	reduce using rule 5 (expr)

The C++ rule is: take it as a declaration if it looks as a declaration, otherwise is an expression.

This Eyapp parser solves the problem by dynamically changing the parser (hacking).

SEE ALSO

1 POD Error

The following errors were encountered while parsing the POD:

Around line 121:

Non-ASCII character seen before =encoding in 'grammar—the'. Assuming UTF-8