summaryrefslogtreecommitdiff
path: root/py/grammar.h
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2015-11-23 16:50:42 +0000
committerDamien George <damien.p.george@gmail.com>2015-11-23 16:50:42 +0000
commit9a56912ad16065c8fc3670c8d493f922bc54e5b1 (patch)
treeae5ca9edae11e43451d065ebdbabfe4184546672 /py/grammar.h
parent0e3f29cc9973dc3c522941858f1f0fb4c6b2cba0 (diff)
py/compile: Do proper checking of * and ** in function definition.
This patch checks that there is only one *, and that ** is last in the arg list.
Diffstat (limited to 'py/grammar.h')
-rw-r--r--py/grammar.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/py/grammar.h b/py/grammar.h
index b507132d0..b7036c8ec 100644
--- a/py/grammar.h
+++ b/py/grammar.h
@@ -60,7 +60,7 @@ DEF_RULE(decorated, c(decorated), and(2), rule(decorators), rule(decorated_body)
DEF_RULE(decorated_body, nc, or(2), rule(classdef), rule(funcdef))
DEF_RULE(funcdef, c(funcdef), blank | and(8), tok(KW_DEF), tok(NAME), tok(DEL_PAREN_OPEN), opt_rule(typedargslist), tok(DEL_PAREN_CLOSE), opt_rule(funcdefrettype), tok(DEL_COLON), rule(suite))
DEF_RULE(funcdefrettype, nc, ident | and(2), tok(DEL_MINUS_MORE), rule(test))
-// TODO typedargslist lets through more than is allowed
+// note: typedargslist lets through more than is allowed, compiler does further checks
DEF_RULE(typedargslist, nc, list_with_end, rule(typedargslist_item), tok(DEL_COMMA))
DEF_RULE(typedargslist_item, nc, or(3), rule(typedargslist_name), rule(typedargslist_star), rule(typedargslist_dbl_star))
DEF_RULE(typedargslist_name, nc, ident | and(3), tok(NAME), opt_rule(typedargslist_colon), opt_rule(typedargslist_equal))
@@ -69,7 +69,7 @@ DEF_RULE(typedargslist_dbl_star, nc, and(3), tok(OP_DBL_STAR), tok(NAME), opt_ru
DEF_RULE(typedargslist_colon, nc, ident | and(2), tok(DEL_COLON), rule(test))
DEF_RULE(typedargslist_equal, nc, ident | and(2), tok(DEL_EQUAL), rule(test))
DEF_RULE(tfpdef, nc, and(2), tok(NAME), opt_rule(typedargslist_colon))
-// TODO varargslist lets through more than is allowed
+// note: varargslist lets through more than is allowed, compiler does further checks
DEF_RULE(varargslist, nc, list_with_end, rule(varargslist_item), tok(DEL_COMMA))
DEF_RULE(varargslist_item, nc, or(3), rule(varargslist_name), rule(varargslist_star), rule(varargslist_dbl_star))
DEF_RULE(varargslist_name, nc, ident | and(2), tok(NAME), opt_rule(varargslist_equal))