From 95f8a69de77772c005b1a239fa89ae702f34964b Mon Sep 17 00:00:00 2001 From: Eric Ludlam Date: Fri, 16 Oct 2015 16:05:17 -0400 Subject: [PATCH] semantic: More C grammar optimizations * admin/grammars/c.by (declmods): Optimize out 2nd match to DECLMOD. (varnamelist, opt-varnamelist-more): Optimize out 2nd match for a variable name into 'opt-varnamelist-more'. (namespace-symbol, opt-namespace-symbol-more): Optimize out 2nd match for the template specifier. --- admin/grammars/c.by | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/admin/grammars/c.by b/admin/grammars/c.by index 2b05d8a6320..06d58bdfe7e 100644 --- a/admin/grammars/c.by +++ b/admin/grammars/c.by @@ -639,8 +639,6 @@ STARMOD declmods : DECLMOD declmods ( ,(cons ,(car ,$1) $2 ) ) - | DECLMOD - ( ,$1 ) | ;;EMPTY () ; @@ -941,10 +939,15 @@ varname-opt-initializer ; varnamelist - : opt-ref varname varname-opt-initializer COMA varnamelist - ( ,(cons (append $2 $3) $5) ) - | opt-ref varname varname-opt-initializer - ( (append $2 $3) ) + : opt-ref varname varname-opt-initializer opt-varnamelist-more + ( ,(cons (append $2 $3) (car $4) )) + ; + +opt-varnamelist-more + : COMA varnamelist + ( $2 ) + | ;; EMPTY + () ; ;; Klaus Berndl: Is necessary to parse stuff like @@ -955,10 +958,15 @@ varnamelist ;; symbol::symbol1::test_iterator ;; but better parsing too much than to less namespace-symbol - : symbol opt-template-specifier COLON COLON namespace-symbol - ( (concat $1 "::" (car $5)) ) - | symbol opt-template-specifier - ( $1 ) + : symbol opt-template-specifier opt-namespace-symbol-more + ( (concat $1 (car $3) ) ) + ; + +opt-namespace-symbol-more + : COLON COLON namespace-symbol + ( (concat "::" (car $3)) ) + | ;; empty + ( "" ) ; ;; Don't pull an optional template specifier at the end of the -- 2.39.5