From d954321c83ef81d32bb82d5280e39186620102d6 Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Sun, 22 Jan 2012 14:37:35 +1000 Subject: Collect function definitions, add them to state blocks. --- LuaSL/src/LuaSL_lemon_yaccer.y | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'LuaSL/src/LuaSL_lemon_yaccer.y') diff --git a/LuaSL/src/LuaSL_lemon_yaccer.y b/LuaSL/src/LuaSL_lemon_yaccer.y index e6c4bcd..239b598 100644 --- a/LuaSL/src/LuaSL_lemon_yaccer.y +++ b/LuaSL/src/LuaSL_lemon_yaccer.y @@ -31,15 +31,16 @@ script ::= . // State definitions. %nonassoc LSL_BLOCK_OPEN LSL_BLOCK_CLOSE LSL_STATE. -stateBlock ::= LSL_BLOCK_OPEN functionList LSL_BLOCK_CLOSE. +stateBlock(A) ::= LSL_BLOCK_OPEN functionList(B) LSL_BLOCK_CLOSE. { A = B; } state(S) ::= LSL_DEFAULT(I) stateBlock(B). { S = addState(compiler, I, B); } state(S) ::= LSL_STATE_CHANGE LSL_IDENTIFIER(I) stateBlock(B). { S = addState(compiler, I, B); } // Function definitions. %nonassoc LSL_PARAMETER LSL_PARAMETER_LIST LSL_FUNCTION. -functionList ::= functionList functionBody. -functionList ::= . +functionList(A) ::= functionList(B) functionBody(C). { A = collectStatements(compiler, B, C); } +//functionList(A) ::= functionBody(C). { A = collectStatements(compiler, NULL, C); } +functionList(A) ::= . { A = collectStatements(compiler, NULL, NULL); } functionBody(A) ::= function(B) funcBlock(C). { A = addFunctionBody(compiler, B, C); } -- cgit v1.1