summaryrefslogtreecommitdiffstats
path: root/parser.y
diff options
context:
space:
mode:
Diffstat (limited to 'parser.y')
-rw-r--r--parser.y18
1 files changed, 10 insertions, 8 deletions
diff --git a/parser.y b/parser.y
index 8c4b4566..0effe07c 100644
--- a/parser.y
+++ b/parser.y
@@ -81,7 +81,7 @@
%left '*' '/'
-%type <blk> Exp Term MkDict MkDictPair ExpD ElseBody QQString FuncDef FuncDefs
+%type <blk> Exp Term MkDict MkDictPair ExpD ElseBody QQString FuncDef FuncDefs String
%{
#include "lexer.gen.h"
#define FAIL(loc, msg) \
@@ -295,14 +295,19 @@ Exp ">=" Exp {
$$ = gen_binop($1, $3, GREATEREQ);
} |
-QQSTRING_START QQString QQSTRING_END {
- $$ = $2;
+String {
+ $$ = $1;
} |
Term {
$$ = $1;
}
+String:
+QQSTRING_START QQString QQSTRING_END {
+ $$ = $2;
+}
+
FuncDef:
"def" IDENT ':' Exp ';' {
block body = block_join($4, gen_op_simple(RET));
@@ -416,11 +421,8 @@ MkDictPair
: IDENT ':' ExpD {
$$ = gen_dictpair(gen_op_const(LOADK, $1), $3);
}
-| LITERAL ':' ExpD {
- if (jv_get_kind($1) != JV_KIND_STRING) {
- FAIL(@1, "Object keys must be strings");
- }
- $$ = gen_dictpair(gen_op_const(LOADK, $1), $3);
+| String ':' ExpD {
+ $$ = gen_dictpair($1, $3);
}
| IDENT {
$$ = gen_dictpair(gen_op_const(LOADK, jv_copy($1)),