emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] scratch/last-cedet-merge 95f8a69 29/50: semantic: More C g


From: David Engster
Subject: [Emacs-diffs] scratch/last-cedet-merge 95f8a69 29/50: semantic: More C grammar optimizations
Date: Wed, 25 Jan 2017 22:15:22 +0000 (UTC)

branch: scratch/last-cedet-merge
commit 95f8a69de77772c005b1a239fa89ae702f34964b
Author: Eric Ludlam <address@hidden>
Commit: David Engster <address@hidden>

    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 2b05d8a..06d58bd 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<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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]