module languages/php/version5/literals/VariableLiterals
exports
sorts FunctionCall ObjectFunctionCall ObjectProperty ObjectCVar CallParam
context-free syntax
%% Results from a function can be used as an object in version 5.
%% Prefers are needed to prevent ambiguity in foo()->foo()->foo()
FunctionCall "->" ObjectProperty -> ObjectCVar {cons("ObjectAcces")}
ObjectFunctionCall "->" ObjectProperty -> ObjectCVar {cons("ObjectAcces"),prefer}
ObjectFunctionCall "->" ObjectProperty "(" {CallParam ","}* ")" -> ObjectFunctionCall {cons("FunctionCall"),prefer}
FunctionCall "->" ObjectProperty "(" {CallParam ","}* ")" -> ObjectFunctionCall {cons("FunctionCall")}