diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2000-04-03 10:44:55 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2000-04-03 10:44:55 -0300 |
commit | 3e45496295bef65692f690d1633a9ce6ad9408b0 (patch) | |
tree | 6ca6562cde4480463b46be0bbd4693543d32e67e | |
parent | e30327728ca4efc3fb8591cf3ea0b65cafbd907a (diff) | |
download | lua-3e45496295bef65692f690d1633a9ce6ad9408b0.tar.gz lua-3e45496295bef65692f690d1633a9ce6ad9408b0.tar.bz2 lua-3e45496295bef65692f690d1633a9ce6ad9408b0.zip |
syntactical details
-rw-r--r-- | lparser.c | 30 |
1 files changed, 13 insertions, 17 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lparser.c,v 1.73 2000/03/24 17:26:08 roberto Exp roberto $ | 2 | ** $Id: lparser.c,v 1.74 2000/03/29 20:19:20 roberto Exp roberto $ |
3 | ** LL(1) Parser and code generator for Lua | 3 | ** LL(1) Parser and code generator for Lua |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -901,17 +901,16 @@ static int funcname (LexState *ls, expdesc *v) { | |||
901 | } | 901 | } |
902 | 902 | ||
903 | 903 | ||
904 | static int funcstat (LexState *ls, int line) { | 904 | static void funcstat (LexState *ls, int line) { |
905 | /* funcstat -> FUNCTION funcname body */ | 905 | /* funcstat -> FUNCTION funcname body */ |
906 | int needself; | 906 | int needself; |
907 | expdesc v; | 907 | expdesc v; |
908 | if (ls->fs->prev) /* inside other function? */ | 908 | if (ls->fs->prev) /* inside other function? */ |
909 | return 0; | 909 | luaK_error(ls, "cannot nest this kind of function declaration"); |
910 | setline_and_next(ls); /* skip FUNCTION */ | 910 | setline_and_next(ls); /* skip FUNCTION */ |
911 | needself = funcname(ls, &v); | 911 | needself = funcname(ls, &v); |
912 | body(ls, needself, line); | 912 | body(ls, needself, line); |
913 | luaK_storevar(ls, &v); | 913 | luaK_storevar(ls, &v); |
914 | return 1; | ||
915 | } | 914 | } |
916 | 915 | ||
917 | 916 | ||
@@ -969,42 +968,39 @@ static int stat (LexState *ls) { | |||
969 | case TK_IF: /* stat -> IF ifpart END */ | 968 | case TK_IF: /* stat -> IF ifpart END */ |
970 | ifpart(ls); | 969 | ifpart(ls); |
971 | check_END(ls, TK_IF, line); | 970 | check_END(ls, TK_IF, line); |
972 | return 1; | 971 | break; |
973 | 972 | ||
974 | case TK_WHILE: /* stat -> whilestat */ | 973 | case TK_WHILE: /* stat -> whilestat */ |
975 | whilestat(ls, line); | 974 | whilestat(ls, line); |
976 | return 1; | 975 | break; |
977 | 976 | ||
978 | case TK_DO: { /* stat -> DO block END */ | 977 | case TK_DO: { /* stat -> DO block END */ |
979 | setline_and_next(ls); /* skip DO */ | 978 | setline_and_next(ls); /* skip DO */ |
980 | block(ls); | 979 | block(ls); |
981 | check_END(ls, TK_DO, line); | 980 | check_END(ls, TK_DO, line); |
982 | return 1; | 981 | break; |
983 | } | 982 | } |
984 | 983 | ||
985 | case TK_REPEAT: /* stat -> repeatstat */ | 984 | case TK_REPEAT: /* stat -> repeatstat */ |
986 | repeatstat(ls, line); | 985 | repeatstat(ls, line); |
987 | return 1; | 986 | break; |
988 | 987 | ||
989 | case TK_FUNCTION: /* stat -> funcstat */ | 988 | case TK_FUNCTION: /* stat -> funcstat */ |
990 | return funcstat(ls, line); | 989 | funcstat(ls, line); |
990 | break; | ||
991 | 991 | ||
992 | case TK_LOCAL: /* stat -> localstat */ | 992 | case TK_LOCAL: /* stat -> localstat */ |
993 | localstat(ls); | 993 | localstat(ls); |
994 | return 1; | 994 | break; |
995 | 995 | ||
996 | case TK_NAME: case '%': /* stat -> namestat */ | 996 | case TK_NAME: case '%': /* stat -> namestat */ |
997 | namestat(ls); | 997 | namestat(ls); |
998 | return 1; | 998 | break; |
999 | |||
1000 | case TK_RETURN: case TK_END: case TK_UNTIL: | ||
1001 | case ';': case TK_ELSE: case TK_ELSEIF: case TK_EOS: /* `stat' follow */ | ||
1002 | return 0; | ||
1003 | 999 | ||
1004 | default: | 1000 | default: |
1005 | error_unexpected(ls); | 1001 | return 0; /* no statement */ |
1006 | return 0; /* to avoid warnings */ | ||
1007 | } | 1002 | } |
1003 | return 1; | ||
1008 | } | 1004 | } |
1009 | 1005 | ||
1010 | 1006 | ||