diff options
Diffstat (limited to 'eshtrans')
-rw-r--r-- | eshtrans/frontend/lexer.esh | 11 | ||||
-rw-r--r-- | eshtrans/frontend/parser.esh | 2 | ||||
-rw-r--r-- | eshtrans/tokens.esh | 2 |
3 files changed, 9 insertions, 6 deletions
diff --git a/eshtrans/frontend/lexer.esh b/eshtrans/frontend/lexer.esh index b7d0886..5a8bd56 100644 --- a/eshtrans/frontend/lexer.esh +++ b/eshtrans/frontend/lexer.esh @@ -913,9 +913,10 @@ accept() dbg "looking for $t, current tok ${tok%%${US}*}" case "${t}" in - T_IF|T_THEN|T_ELSE|T_ELIF|T_FI|\ - T_DO|T_DONE|T_CASE|T_ESAC|T_WHILE|T_UNTIL|\ - T_FOR|T_LBRACE|T_RBRACE|T_BANG|T_IN|T_STATIC|T_RETURN) + T_IF|T_THEN|T_ELSE|T_ELIF|T_FI|T_DO|T_DONE|\ + T_CASE|T_ESAC|T_WHILE|T_UNTIL|T_FOR|\ + T_LBRACE|T_RBRACE|T_BANG|T_IN|\ + T_STATIC|T_LOCAL|T_RETURN) dbg "looking for reserved word $t, have '$tok'" if ! [ "x${tok%%${US}*}" = "x${t}" ]; then # Reserved words are recognized as literal @@ -969,7 +970,7 @@ accept() for rw in T_IF T_THEN T_ELSE T_ELIF T_FI T_DO T_DONE \ T_CASE T_ESAC T_WHILE T_UNTIL T_FOR \ T_LBRACE T_RBRACE T_BANG T_IN \ - T_STATIC T_RETURN; do + T_STATIC T_LOCAL T_RETURN; do if [ "x${tok#T_WORD${US}}" = \ "x$(toktext "${rw}")" ]; then tok="${rw}" @@ -988,7 +989,7 @@ accept() for rw in T_IF T_THEN T_ELSE T_ELIF T_FI T_DO T_DONE \ T_CASE T_ESAC T_WHILE T_UNTIL T_FOR \ T_LBRACE T_RBRACE T_BANG T_IN \ - T_STATIC T_RETURN; do + T_STATIC T_LOCAL T_RETURN; do if [ "x${tok#T_WORD${US}}" = \ "x$(toktext "${rw}")" ]; then tok="${rw}" diff --git a/eshtrans/frontend/parser.esh b/eshtrans/frontend/parser.esh index e993221..e967fc7 100644 --- a/eshtrans/frontend/parser.esh +++ b/eshtrans/frontend/parser.esh @@ -404,7 +404,7 @@ do_group() simple_command() { ptrace_begn simple_command - if accept T_RETURN; then + if accept T_LOCAL || accept T_RETURN; then cmd_suffix ptrace_pass simple_command return 0 diff --git a/eshtrans/tokens.esh b/eshtrans/tokens.esh index a4dee4f..edb5f76 100644 --- a/eshtrans/tokens.esh +++ b/eshtrans/tokens.esh @@ -65,6 +65,7 @@ tokname() T_BANG) n='"!"';; T_IN) n='"in"';; T_STATIC) n='"static"';; + T_LOCAL) n='"local"';; T_RETURN) n='"return"';; # Special symbols T_NAME) n='parameter name';; @@ -130,6 +131,7 @@ toktext() T_BANG) n='!';; T_IN) n='in';; T_STATIC) n='static';; + T_LOCAL) n='__local';; T_RETURN) n='return';; # Special symbols T_NAME) n="${t#*${US}}";; |