]> git.eshelyaron.com Git - emacs.git/commitdiff
semantic: More C grammar optimizations
authorEric Ludlam <eric@siege-engine.com>
Fri, 16 Oct 2015 20:05:17 +0000 (16:05 -0400)
committerDavid Engster <deng@randomsample.de>
Sun, 22 Jan 2017 21:25:16 +0000 (22:25 +0100)
* 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

index 2b05d8a632091a2b5d66e308db7fcc53f4b31048..06d58bdfe7ec77fdcb7d5bb8e99d9b7ecbbb39bc 100644 (file)
@@ -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<template-spec>::symbol1<template-spec1>::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