Add polymorphism to syntax tree and parser
This commit is contained in:
parent
b0e6418161
commit
212534976a
@ -96,17 +96,29 @@ decl() ->
|
|||||||
choice(
|
choice(
|
||||||
%% Contract declaration
|
%% Contract declaration
|
||||||
[ ?RULE(token(main), keyword(contract),
|
[ ?RULE(token(main), keyword(contract),
|
||||||
con(), tok('='), maybe_block(decl()), {contract_main, _2, _3, _5})
|
con(), tok('='), maybe_block(decl()), {contract_main, _2, _3, [], _5})
|
||||||
|
, ?RULE(token(main), keyword(contract),
|
||||||
|
con(), tok(':'), comma_sep(con()), tok('='), maybe_block(decl()), {contract_main, _2, _3, _5, _7})
|
||||||
, ?RULE(keyword(contract),
|
, ?RULE(keyword(contract),
|
||||||
con(), tok('='), maybe_block(decl()), {contract_child, _1, _2, _4})
|
con(), tok('='), maybe_block(decl()), {contract_child, _1, _2, [], _4})
|
||||||
|
, ?RULE(keyword(contract),
|
||||||
|
con(), tok(':'), comma_sep(con()), tok('='), maybe_block(decl()), {contract_child, _1, _2, _4, _6})
|
||||||
, ?RULE(keyword(contract), token(interface),
|
, ?RULE(keyword(contract), token(interface),
|
||||||
con(), tok('='), maybe_block(decl()), {contract_interface, _1, _3, _5})
|
con(), tok('='), maybe_block(decl()), {contract_interface, _1, _3, [], _5})
|
||||||
|
, ?RULE(keyword(contract), token(interface),
|
||||||
|
con(), tok(':'), comma_sep(con()), tok('='), maybe_block(decl()), {contract_interface, _1, _3, _5, _7})
|
||||||
, ?RULE(token(payable), token(main), keyword(contract),
|
, ?RULE(token(payable), token(main), keyword(contract),
|
||||||
con(), tok('='), maybe_block(decl()), add_modifiers([_1], {contract_main, _3, _4, _6}))
|
con(), tok('='), maybe_block(decl()), add_modifiers([_1], {contract_main, _3, _4, [], _6}))
|
||||||
|
, ?RULE(token(payable), token(main), keyword(contract),
|
||||||
|
con(), tok(':'), comma_sep(con()), tok('='), maybe_block(decl()), add_modifiers([_1], {contract_main, _3, _4, _6, _8}))
|
||||||
, ?RULE(token(payable), keyword(contract),
|
, ?RULE(token(payable), keyword(contract),
|
||||||
con(), tok('='), maybe_block(decl()), add_modifiers([_1], {contract_child, _2, _3, _5}))
|
con(), tok('='), maybe_block(decl()), add_modifiers([_1], {contract_child, _2, _3, [], _5}))
|
||||||
|
, ?RULE(token(payable), keyword(contract),
|
||||||
|
con(), tok(':'), comma_sep(con()), tok('='), maybe_block(decl()), add_modifiers([_1], {contract_child, _2, _3, _5, _7}))
|
||||||
, ?RULE(token(payable), keyword(contract), token(interface),
|
, ?RULE(token(payable), keyword(contract), token(interface),
|
||||||
con(), tok('='), maybe_block(decl()), add_modifiers([_1], {contract_interface, _2, _4, _6}))
|
con(), tok('='), maybe_block(decl()), add_modifiers([_1], {contract_interface, _2, _4, [], _6}))
|
||||||
|
, ?RULE(token(payable), keyword(contract), token(interface),
|
||||||
|
con(), tok(':'), comma_sep(con()), tok('='), maybe_block(decl()), add_modifiers([_1], {contract_interface, _2, _4, _6, _8}))
|
||||||
|
|
||||||
|
|
||||||
, ?RULE(keyword(namespace), con(), tok('='), maybe_block(decl()), {namespace, _1, _2, _4})
|
, ?RULE(keyword(namespace), con(), tok('='), maybe_block(decl()), {namespace, _1, _2, _4})
|
||||||
|
@ -38,9 +38,9 @@
|
|||||||
-type namespace_alias() :: none | con().
|
-type namespace_alias() :: none | con().
|
||||||
-type namespace_parts() :: none | {for, [id()]} | {hiding, [id()]}.
|
-type namespace_parts() :: none | {for, [id()]} | {hiding, [id()]}.
|
||||||
|
|
||||||
-type decl() :: {contract_main, ann(), con(), [decl()]}
|
-type decl() :: {contract_main, ann(), con(), [con()], [decl()]}
|
||||||
| {contract_child, ann(), con(), [decl()]}
|
| {contract_child, ann(), con(), [con()], [decl()]}
|
||||||
| {contract_interface, ann(), con(), [decl()]}
|
| {contract_interface, ann(), con(), [con()], [decl()]}
|
||||||
| {namespace, ann(), con(), [decl()]}
|
| {namespace, ann(), con(), [decl()]}
|
||||||
| {pragma, ann(), pragma()}
|
| {pragma, ann(), pragma()}
|
||||||
| {type_decl, ann(), id(), [tvar()]} % Only for error msgs
|
| {type_decl, ann(), id(), [tvar()]} % Only for error msgs
|
||||||
|
Loading…
x
Reference in New Issue
Block a user