aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Ludlam2015-10-16 16:05:17 -0400
committerDavid Engster2017-01-22 22:25:16 +0100
commit95f8a69de77772c005b1a239fa89ae702f34964b (patch)
tree26b0e75df830b66b2ffc074652a051b5be13e2f2
parentcfd71390b48366c62bb38022248198d2b388ea35 (diff)
downloademacs-95f8a69de77772c005b1a239fa89ae702f34964b.tar.gz
emacs-95f8a69de77772c005b1a239fa89ae702f34964b.zip
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.
-rw-r--r--admin/grammars/c.by28
1 files 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
639declmods 639declmods
640 : DECLMOD declmods 640 : DECLMOD declmods
641 ( ,(cons ,(car ,$1) $2 ) ) 641 ( ,(cons ,(car ,$1) $2 ) )
642 | DECLMOD
643 ( ,$1 )
644 | ;;EMPTY 642 | ;;EMPTY
645 () 643 ()
646 ; 644 ;
@@ -941,10 +939,15 @@ varname-opt-initializer
941 ; 939 ;
942 940
943varnamelist 941varnamelist
944 : opt-ref varname varname-opt-initializer COMA varnamelist 942 : opt-ref varname varname-opt-initializer opt-varnamelist-more
945 ( ,(cons (append $2 $3) $5) ) 943 ( ,(cons (append $2 $3) (car $4) ))
946 | opt-ref varname varname-opt-initializer 944 ;
947 ( (append $2 $3) ) 945
946opt-varnamelist-more
947 : COMA varnamelist
948 ( $2 )
949 | ;; EMPTY
950 ()
948 ; 951 ;
949 952
950;; Klaus Berndl: Is necessary to parse stuff like 953;; Klaus Berndl: Is necessary to parse stuff like
@@ -955,10 +958,15 @@ varnamelist
955;; symbol<template-spec>::symbol1<template-spec1>::test_iterator 958;; symbol<template-spec>::symbol1<template-spec1>::test_iterator
956;; but better parsing too much than to less 959;; but better parsing too much than to less
957namespace-symbol 960namespace-symbol
958 : symbol opt-template-specifier COLON COLON namespace-symbol 961 : symbol opt-template-specifier opt-namespace-symbol-more
959 ( (concat $1 "::" (car $5)) ) 962 ( (concat $1 (car $3) ) )
960 | symbol opt-template-specifier 963 ;
961 ( $1 ) 964
965opt-namespace-symbol-more
966 : COLON COLON namespace-symbol
967 ( (concat "::" (car $3)) )
968 | ;; empty
969 ( "" )
962 ; 970 ;
963 971
964;; Don't pull an optional template specifier at the end of the 972;; Don't pull an optional template specifier at the end of the