From 56ae0982fd0b39cb91be33028ebd3cc4030edbe0 Mon Sep 17 00:00:00 2001 From: vadim Date: Thu, 30 Nov 2017 19:16:01 +0200 Subject: [PATCH] parse trait --- parser.go | 4069 +++++++++++++++++++++++++++-------------------------- parser.y | 15 +- 2 files changed, 2052 insertions(+), 2032 deletions(-) diff --git a/parser.go b/parser.go index 882e2c1..a483d6c 100644 --- a/parser.go +++ b/parser.go @@ -367,10 +367,15 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line parser.y:1061 +//line parser.y:1067 const src = ` inline_use_declaration %type unprefixed_use_declaration %type use_declaration +%type trait_declaration_statement %% @@ -338,6 +339,7 @@ top_statement: statement { $$ = $1 } | function_declaration_statement { $$ = $1 } | class_declaration_statement { $$ = $1; } + | trait_declaration_statement { $$ = $1; } | T_HALT_COMPILER '(' ')' ';' { $$ = Node("THaltCompiler") } @@ -683,6 +685,10 @@ class_modifier: | T_FINAL { $$ = "final" } ; +trait_declaration_statement: + T_TRAIT T_STRING '{' class_statement_list '}' { $$ = Node("Trait").attribute("name", $2).append($4) } +; + class_statement_list: class_statement_list class_statement { $$ = $1.append($2) } | /* empty */ { $$ = Node("Stmt") } @@ -1061,8 +1067,13 @@ static_member: %% const src = `