diff options
| author | Eric Ludlam | 2015-10-16 16:05:17 -0400 |
|---|---|---|
| committer | David Engster | 2017-01-22 22:25:16 +0100 |
| commit | 95f8a69de77772c005b1a239fa89ae702f34964b (patch) | |
| tree | 26b0e75df830b66b2ffc074652a051b5be13e2f2 | |
| parent | cfd71390b48366c62bb38022248198d2b388ea35 (diff) | |
| download | emacs-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.by | 28 |
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 | |||
| 639 | declmods | 639 | declmods |
| 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 | ||
| 943 | varnamelist | 941 | varnamelist |
| 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 | |
| 946 | opt-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 |
| 957 | namespace-symbol | 960 | namespace-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 | |
| 965 | opt-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 |