diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-07-02 17:53:01 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-07-02 17:53:01 -0400 |
commit | a95cb3cd55c208372ca68d5e8a9923611fed7235 (patch) | |
tree | 0dc63eada59fc93c902605d9495ae32ef6998e09 | |
parent | 19127af9d81f0fcecc3e54fab64b7a7f2f91a92b (diff) | |
parent | 4a47f1eb35c5933ef32b2b99ef20f8fe4a251429 (diff) |
Merge branch 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
Pull kconfig updates from Michal Marek:
- kconfig conditions can use usual less/greater than comparisons
- kconfig warns about stray characters in Kconfig files
- bogus expression simplification removed
- some minor fixes
* 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
kconfig: re-generate *.c_shipped files after previous change
kconfig: allow use of relations other than (in)equality
kconfig: don't silently ignore unhandled characters
kconfig: Wrap long "make help" text lines
scripts/kconfig/Makefile: Cosmetic fixes
scripts/kconfig/Makefile: Fix spelling of Qt
Kconfig: Remove bad inference rules expr_eliminate_dups2()
-rw-r--r-- | scripts/kconfig/Makefile | 28 | ||||
-rw-r--r-- | scripts/kconfig/expr.c | 278 | ||||
-rw-r--r-- | scripts/kconfig/expr.h | 4 | ||||
-rw-r--r-- | scripts/kconfig/symbol.c | 4 | ||||
-rw-r--r-- | scripts/kconfig/zconf.l | 11 | ||||
-rw-r--r-- | scripts/kconfig/zconf.lex.c_shipped | 314 | ||||
-rw-r--r-- | scripts/kconfig/zconf.tab.c_shipped | 524 | ||||
-rw-r--r-- | scripts/kconfig/zconf.y | 9 |
8 files changed, 666 insertions, 506 deletions
diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile index f52abae0ec5f..aceaaed09811 100644 --- a/scripts/kconfig/Makefile +++ b/scripts/kconfig/Makefile | |||
@@ -86,7 +86,7 @@ $(simple-targets): $(obj)/conf | |||
86 | PHONY += oldnoconfig savedefconfig defconfig | 86 | PHONY += oldnoconfig savedefconfig defconfig |
87 | 87 | ||
88 | # oldnoconfig is an alias of olddefconfig, because people already are dependent | 88 | # oldnoconfig is an alias of olddefconfig, because people already are dependent |
89 | # on its behavior(sets new symbols to their default value but not 'n') with the | 89 | # on its behavior (sets new symbols to their default value but not 'n') with the |
90 | # counter-intuitive name. | 90 | # counter-intuitive name. |
91 | oldnoconfig: olddefconfig | 91 | oldnoconfig: olddefconfig |
92 | 92 | ||
@@ -126,10 +126,11 @@ tinyconfig: | |||
126 | # Help text used by make help | 126 | # Help text used by make help |
127 | help: | 127 | help: |
128 | @echo ' config - Update current config utilising a line-oriented program' | 128 | @echo ' config - Update current config utilising a line-oriented program' |
129 | @echo ' nconfig - Update current config utilising a ncurses menu based program' | 129 | @echo ' nconfig - Update current config utilising a ncurses menu based' |
130 | @echo ' program' | ||
130 | @echo ' menuconfig - Update current config utilising a menu based program' | 131 | @echo ' menuconfig - Update current config utilising a menu based program' |
131 | @echo ' xconfig - Update current config utilising a QT based front-end' | 132 | @echo ' xconfig - Update current config utilising a Qt based front-end' |
132 | @echo ' gconfig - Update current config utilising a GTK based front-end' | 133 | @echo ' gconfig - Update current config utilising a GTK+ based front-end' |
133 | @echo ' oldconfig - Update current config utilising a provided .config as base' | 134 | @echo ' oldconfig - Update current config utilising a provided .config as base' |
134 | @echo ' localmodconfig - Update current config disabling modules not loaded' | 135 | @echo ' localmodconfig - Update current config disabling modules not loaded' |
135 | @echo ' localyesconfig - Update current config converting local mods to core' | 136 | @echo ' localyesconfig - Update current config converting local mods to core' |
@@ -142,7 +143,8 @@ help: | |||
142 | @echo ' alldefconfig - New config with all symbols set to default' | 143 | @echo ' alldefconfig - New config with all symbols set to default' |
143 | @echo ' randconfig - New config with random answer to all options' | 144 | @echo ' randconfig - New config with random answer to all options' |
144 | @echo ' listnewconfig - List new options' | 145 | @echo ' listnewconfig - List new options' |
145 | @echo ' olddefconfig - Same as silentoldconfig but sets new symbols to their default value' | 146 | @echo ' olddefconfig - Same as silentoldconfig but sets new symbols to their' |
147 | @echo ' default value' | ||
146 | @echo ' kvmconfig - Enable additional options for kvm guest kernel support' | 148 | @echo ' kvmconfig - Enable additional options for kvm guest kernel support' |
147 | @echo ' xenconfig - Enable additional options for xen dom0 and guest kernel support' | 149 | @echo ' xenconfig - Enable additional options for xen dom0 and guest kernel support' |
148 | @echo ' tinyconfig - Configure the tiniest possible kernel' | 150 | @echo ' tinyconfig - Configure the tiniest possible kernel' |
@@ -163,9 +165,9 @@ HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags) \ | |||
163 | # mconf: Used for the menuconfig target | 165 | # mconf: Used for the menuconfig target |
164 | # Utilizes the lxdialog package | 166 | # Utilizes the lxdialog package |
165 | # qconf: Used for the xconfig target | 167 | # qconf: Used for the xconfig target |
166 | # Based on QT which needs to be installed to compile it | 168 | # Based on Qt which needs to be installed to compile it |
167 | # gconf: Used for the gconfig target | 169 | # gconf: Used for the gconfig target |
168 | # Based on GTK which needs to be installed to compile it | 170 | # Based on GTK+ which needs to be installed to compile it |
169 | # object files used by all kconfig flavours | 171 | # object files used by all kconfig flavours |
170 | 172 | ||
171 | lxdialog := lxdialog/checklist.o lxdialog/util.o lxdialog/inputbox.o | 173 | lxdialog := lxdialog/checklist.o lxdialog/util.o lxdialog/inputbox.o |
@@ -222,11 +224,11 @@ ifeq ($(MAKECMDGOALS),xconfig) | |||
222 | $(obj)/.tmp_qtcheck: $(src)/Makefile | 224 | $(obj)/.tmp_qtcheck: $(src)/Makefile |
223 | -include $(obj)/.tmp_qtcheck | 225 | -include $(obj)/.tmp_qtcheck |
224 | 226 | ||
225 | # QT needs some extra effort... | 227 | # Qt needs some extra effort... |
226 | $(obj)/.tmp_qtcheck: | 228 | $(obj)/.tmp_qtcheck: |
227 | @set -e; $(kecho) " CHECK qt"; dir=""; pkg=""; \ | 229 | @set -e; $(kecho) " CHECK qt"; dir=""; pkg=""; \ |
228 | if ! pkg-config --exists QtCore 2> /dev/null; then \ | 230 | if ! pkg-config --exists QtCore 2> /dev/null; then \ |
229 | echo "* Unable to find the QT4 tool qmake. Trying to use QT3"; \ | 231 | echo "* Unable to find the Qt4 tool qmake. Trying to use Qt3"; \ |
230 | pkg-config --exists qt 2> /dev/null && pkg=qt; \ | 232 | pkg-config --exists qt 2> /dev/null && pkg=qt; \ |
231 | pkg-config --exists qt-mt 2> /dev/null && pkg=qt-mt; \ | 233 | pkg-config --exists qt-mt 2> /dev/null && pkg=qt-mt; \ |
232 | if [ -n "$$pkg" ]; then \ | 234 | if [ -n "$$pkg" ]; then \ |
@@ -240,8 +242,8 @@ $(obj)/.tmp_qtcheck: | |||
240 | done; \ | 242 | done; \ |
241 | if [ -z "$$dir" ]; then \ | 243 | if [ -z "$$dir" ]; then \ |
242 | echo >&2 "*"; \ | 244 | echo >&2 "*"; \ |
243 | echo >&2 "* Unable to find any QT installation. Please make sure that"; \ | 245 | echo >&2 "* Unable to find any Qt installation. Please make sure that"; \ |
244 | echo >&2 "* the QT4 or QT3 development package is correctly installed and"; \ | 246 | echo >&2 "* the Qt4 or Qt3 development package is correctly installed and"; \ |
245 | echo >&2 "* either qmake can be found or install pkg-config or set"; \ | 247 | echo >&2 "* either qmake can be found or install pkg-config or set"; \ |
246 | echo >&2 "* the QTDIR environment variable to the correct location."; \ | 248 | echo >&2 "* the QTDIR environment variable to the correct location."; \ |
247 | echo >&2 "*"; \ | 249 | echo >&2 "*"; \ |
@@ -278,7 +280,7 @@ $(obj)/gconf.o: $(obj)/.tmp_gtkcheck | |||
278 | ifeq ($(MAKECMDGOALS),gconfig) | 280 | ifeq ($(MAKECMDGOALS),gconfig) |
279 | -include $(obj)/.tmp_gtkcheck | 281 | -include $(obj)/.tmp_gtkcheck |
280 | 282 | ||
281 | # GTK needs some extra effort, too... | 283 | # GTK+ needs some extra effort, too... |
282 | $(obj)/.tmp_gtkcheck: | 284 | $(obj)/.tmp_gtkcheck: |
283 | @if `pkg-config --exists gtk+-2.0 gmodule-2.0 libglade-2.0`; then \ | 285 | @if `pkg-config --exists gtk+-2.0 gmodule-2.0 libglade-2.0`; then \ |
284 | if `pkg-config --atleast-version=2.0.0 gtk+-2.0`; then \ | 286 | if `pkg-config --atleast-version=2.0.0 gtk+-2.0`; then \ |
@@ -309,7 +311,7 @@ quiet_cmd_moc = MOC $@ | |||
309 | $(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck | 311 | $(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck |
310 | $(call cmd,moc) | 312 | $(call cmd,moc) |
311 | 313 | ||
312 | # Extract gconf menu items for I18N support | 314 | # Extract gconf menu items for i18n support |
313 | $(obj)/gconf.glade.h: $(obj)/gconf.glade | 315 | $(obj)/gconf.glade.h: $(obj)/gconf.glade |
314 | $(Q)intltool-extract --type=gettext/glade --srcdir=$(srctree) \ | 316 | $(Q)intltool-extract --type=gettext/glade --srcdir=$(srctree) \ |
315 | $(obj)/gconf.glade | 317 | $(obj)/gconf.glade |
diff --git a/scripts/kconfig/expr.c b/scripts/kconfig/expr.c index fb0a2a286dca..667d1aa23711 100644 --- a/scripts/kconfig/expr.c +++ b/scripts/kconfig/expr.c | |||
@@ -13,9 +13,6 @@ | |||
13 | 13 | ||
14 | static int expr_eq(struct expr *e1, struct expr *e2); | 14 | static int expr_eq(struct expr *e1, struct expr *e2); |
15 | static struct expr *expr_eliminate_yn(struct expr *e); | 15 | static struct expr *expr_eliminate_yn(struct expr *e); |
16 | static struct expr *expr_extract_eq_and(struct expr **ep1, struct expr **ep2); | ||
17 | static struct expr *expr_extract_eq_or(struct expr **ep1, struct expr **ep2); | ||
18 | static void expr_extract_eq(enum expr_type type, struct expr **ep, struct expr **ep1, struct expr **ep2); | ||
19 | 16 | ||
20 | struct expr *expr_alloc_symbol(struct symbol *sym) | 17 | struct expr *expr_alloc_symbol(struct symbol *sym) |
21 | { | 18 | { |
@@ -82,6 +79,10 @@ struct expr *expr_copy(const struct expr *org) | |||
82 | e->left.expr = expr_copy(org->left.expr); | 79 | e->left.expr = expr_copy(org->left.expr); |
83 | break; | 80 | break; |
84 | case E_EQUAL: | 81 | case E_EQUAL: |
82 | case E_GEQ: | ||
83 | case E_GTH: | ||
84 | case E_LEQ: | ||
85 | case E_LTH: | ||
85 | case E_UNEQUAL: | 86 | case E_UNEQUAL: |
86 | e->left.sym = org->left.sym; | 87 | e->left.sym = org->left.sym; |
87 | e->right.sym = org->right.sym; | 88 | e->right.sym = org->right.sym; |
@@ -114,6 +115,10 @@ void expr_free(struct expr *e) | |||
114 | expr_free(e->left.expr); | 115 | expr_free(e->left.expr); |
115 | return; | 116 | return; |
116 | case E_EQUAL: | 117 | case E_EQUAL: |
118 | case E_GEQ: | ||
119 | case E_GTH: | ||
120 | case E_LEQ: | ||
121 | case E_LTH: | ||
117 | case E_UNEQUAL: | 122 | case E_UNEQUAL: |
118 | break; | 123 | break; |
119 | case E_OR: | 124 | case E_OR: |
@@ -200,6 +205,10 @@ static int expr_eq(struct expr *e1, struct expr *e2) | |||
200 | return 0; | 205 | return 0; |
201 | switch (e1->type) { | 206 | switch (e1->type) { |
202 | case E_EQUAL: | 207 | case E_EQUAL: |
208 | case E_GEQ: | ||
209 | case E_GTH: | ||
210 | case E_LEQ: | ||
211 | case E_LTH: | ||
203 | case E_UNEQUAL: | 212 | case E_UNEQUAL: |
204 | return e1->left.sym == e2->left.sym && e1->right.sym == e2->right.sym; | 213 | return e1->left.sym == e2->left.sym && e1->right.sym == e2->right.sym; |
205 | case E_SYMBOL: | 214 | case E_SYMBOL: |
@@ -559,62 +568,6 @@ static void expr_eliminate_dups1(enum expr_type type, struct expr **ep1, struct | |||
559 | #undef e2 | 568 | #undef e2 |
560 | } | 569 | } |
561 | 570 | ||
562 | static void expr_eliminate_dups2(enum expr_type type, struct expr **ep1, struct expr **ep2) | ||
563 | { | ||
564 | #define e1 (*ep1) | ||
565 | #define e2 (*ep2) | ||
566 | struct expr *tmp, *tmp1, *tmp2; | ||
567 | |||
568 | if (e1->type == type) { | ||
569 | expr_eliminate_dups2(type, &e1->left.expr, &e2); | ||
570 | expr_eliminate_dups2(type, &e1->right.expr, &e2); | ||
571 | return; | ||
572 | } | ||
573 | if (e2->type == type) { | ||
574 | expr_eliminate_dups2(type, &e1, &e2->left.expr); | ||
575 | expr_eliminate_dups2(type, &e1, &e2->right.expr); | ||
576 | } | ||
577 | if (e1 == e2) | ||
578 | return; | ||
579 | |||
580 | switch (e1->type) { | ||
581 | case E_OR: | ||
582 | expr_eliminate_dups2(e1->type, &e1, &e1); | ||
583 | // (FOO || BAR) && (!FOO && !BAR) -> n | ||
584 | tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1))); | ||
585 | tmp2 = expr_copy(e2); | ||
586 | tmp = expr_extract_eq_and(&tmp1, &tmp2); | ||
587 | if (expr_is_yes(tmp1)) { | ||
588 | expr_free(e1); | ||
589 | e1 = expr_alloc_symbol(&symbol_no); | ||
590 | trans_count++; | ||
591 | } | ||
592 | expr_free(tmp2); | ||
593 | expr_free(tmp1); | ||
594 | expr_free(tmp); | ||
595 | break; | ||
596 | case E_AND: | ||
597 | expr_eliminate_dups2(e1->type, &e1, &e1); | ||
598 | // (FOO && BAR) || (!FOO || !BAR) -> y | ||
599 | tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1))); | ||
600 | tmp2 = expr_copy(e2); | ||
601 | tmp = expr_extract_eq_or(&tmp1, &tmp2); | ||
602 | if (expr_is_no(tmp1)) { | ||
603 | expr_free(e1); | ||
604 | e1 = expr_alloc_symbol(&symbol_yes); | ||
605 | trans_count++; | ||
606 | } | ||
607 | expr_free(tmp2); | ||
608 | expr_free(tmp1); | ||
609 | expr_free(tmp); | ||
610 | break; | ||
611 | default: | ||
612 | ; | ||
613 | } | ||
614 | #undef e1 | ||
615 | #undef e2 | ||
616 | } | ||
617 | |||
618 | struct expr *expr_eliminate_dups(struct expr *e) | 571 | struct expr *expr_eliminate_dups(struct expr *e) |
619 | { | 572 | { |
620 | int oldcount; | 573 | int oldcount; |
@@ -627,7 +580,6 @@ struct expr *expr_eliminate_dups(struct expr *e) | |||
627 | switch (e->type) { | 580 | switch (e->type) { |
628 | case E_OR: case E_AND: | 581 | case E_OR: case E_AND: |
629 | expr_eliminate_dups1(e->type, &e, &e); | 582 | expr_eliminate_dups1(e->type, &e, &e); |
630 | expr_eliminate_dups2(e->type, &e, &e); | ||
631 | default: | 583 | default: |
632 | ; | 584 | ; |
633 | } | 585 | } |
@@ -647,6 +599,10 @@ struct expr *expr_transform(struct expr *e) | |||
647 | return NULL; | 599 | return NULL; |
648 | switch (e->type) { | 600 | switch (e->type) { |
649 | case E_EQUAL: | 601 | case E_EQUAL: |
602 | case E_GEQ: | ||
603 | case E_GTH: | ||
604 | case E_LEQ: | ||
605 | case E_LTH: | ||
650 | case E_UNEQUAL: | 606 | case E_UNEQUAL: |
651 | case E_SYMBOL: | 607 | case E_SYMBOL: |
652 | case E_LIST: | 608 | case E_LIST: |
@@ -719,6 +675,22 @@ struct expr *expr_transform(struct expr *e) | |||
719 | e = tmp; | 675 | e = tmp; |
720 | e->type = e->type == E_EQUAL ? E_UNEQUAL : E_EQUAL; | 676 | e->type = e->type == E_EQUAL ? E_UNEQUAL : E_EQUAL; |
721 | break; | 677 | break; |
678 | case E_LEQ: | ||
679 | case E_GEQ: | ||
680 | // !a<='x' -> a>'x' | ||
681 | tmp = e->left.expr; | ||
682 | free(e); | ||
683 | e = tmp; | ||
684 | e->type = e->type == E_LEQ ? E_GTH : E_LTH; | ||
685 | break; | ||
686 | case E_LTH: | ||
687 | case E_GTH: | ||
688 | // !a<'x' -> a>='x' | ||
689 | tmp = e->left.expr; | ||
690 | free(e); | ||
691 | e = tmp; | ||
692 | e->type = e->type == E_LTH ? E_GEQ : E_LEQ; | ||
693 | break; | ||
722 | case E_OR: | 694 | case E_OR: |
723 | // !(a || b) -> !a && !b | 695 | // !(a || b) -> !a && !b |
724 | tmp = e->left.expr; | 696 | tmp = e->left.expr; |
@@ -789,6 +761,10 @@ int expr_contains_symbol(struct expr *dep, struct symbol *sym) | |||
789 | case E_SYMBOL: | 761 | case E_SYMBOL: |
790 | return dep->left.sym == sym; | 762 | return dep->left.sym == sym; |
791 | case E_EQUAL: | 763 | case E_EQUAL: |
764 | case E_GEQ: | ||
765 | case E_GTH: | ||
766 | case E_LEQ: | ||
767 | case E_LTH: | ||
792 | case E_UNEQUAL: | 768 | case E_UNEQUAL: |
793 | return dep->left.sym == sym || | 769 | return dep->left.sym == sym || |
794 | dep->right.sym == sym; | 770 | dep->right.sym == sym; |
@@ -829,57 +805,6 @@ bool expr_depends_symbol(struct expr *dep, struct symbol *sym) | |||
829 | return false; | 805 | return false; |
830 | } | 806 | } |
831 | 807 | ||
832 | static struct expr *expr_extract_eq_and(struct expr **ep1, struct expr **ep2) | ||
833 | { | ||
834 | struct expr *tmp = NULL; | ||
835 | expr_extract_eq(E_AND, &tmp, ep1, ep2); | ||
836 | if (tmp) { | ||
837 | *ep1 = expr_eliminate_yn(*ep1); | ||
838 | *ep2 = expr_eliminate_yn(*ep2); | ||
839 | } | ||
840 | return tmp; | ||
841 | } | ||
842 | |||
843 | static struct expr *expr_extract_eq_or(struct expr **ep1, struct expr **ep2) | ||
844 | { | ||
845 | struct expr *tmp = NULL; | ||
846 | expr_extract_eq(E_OR, &tmp, ep1, ep2); | ||
847 | if (tmp) { | ||
848 | *ep1 = expr_eliminate_yn(*ep1); | ||
849 | *ep2 = expr_eliminate_yn(*ep2); | ||
850 | } | ||
851 | return tmp; | ||
852 | } | ||
853 | |||
854 | static void expr_extract_eq(enum expr_type type, struct expr **ep, struct expr **ep1, struct expr **ep2) | ||
855 | { | ||
856 | #define e1 (*ep1) | ||
857 | #define e2 (*ep2) | ||
858 | if (e1->type == type) { | ||
859 | expr_extract_eq(type, ep, &e1->left.expr, &e2); | ||
860 | expr_extract_eq(type, ep, &e1->right.expr, &e2); | ||
861 | return; | ||
862 | } | ||
863 | if (e2->type == type) { | ||
864 | expr_extract_eq(type, ep, ep1, &e2->left.expr); | ||
865 | expr_extract_eq(type, ep, ep1, &e2->right.expr); | ||
866 | return; | ||
867 | } | ||
868 | if (expr_eq(e1, e2)) { | ||
869 | *ep = *ep ? expr_alloc_two(type, *ep, e1) : e1; | ||
870 | expr_free(e2); | ||
871 | if (type == E_AND) { | ||
872 | e1 = expr_alloc_symbol(&symbol_yes); | ||
873 | e2 = expr_alloc_symbol(&symbol_yes); | ||
874 | } else if (type == E_OR) { | ||
875 | e1 = expr_alloc_symbol(&symbol_no); | ||
876 | e2 = expr_alloc_symbol(&symbol_no); | ||
877 | } | ||
878 | } | ||
879 | #undef e1 | ||
880 | #undef e2 | ||
881 | } | ||
882 | |||
883 | struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym) | 808 | struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym) |
884 | { | 809 | { |
885 | struct expr *e1, *e2; | 810 | struct expr *e1, *e2; |
@@ -914,6 +839,10 @@ struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symb | |||
914 | case E_NOT: | 839 | case E_NOT: |
915 | return expr_trans_compare(e->left.expr, type == E_EQUAL ? E_UNEQUAL : E_EQUAL, sym); | 840 | return expr_trans_compare(e->left.expr, type == E_EQUAL ? E_UNEQUAL : E_EQUAL, sym); |
916 | case E_UNEQUAL: | 841 | case E_UNEQUAL: |
842 | case E_LTH: | ||
843 | case E_LEQ: | ||
844 | case E_GTH: | ||
845 | case E_GEQ: | ||
917 | case E_EQUAL: | 846 | case E_EQUAL: |
918 | if (type == E_EQUAL) { | 847 | if (type == E_EQUAL) { |
919 | if (sym == &symbol_yes) | 848 | if (sym == &symbol_yes) |
@@ -941,10 +870,57 @@ struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symb | |||
941 | return NULL; | 870 | return NULL; |
942 | } | 871 | } |
943 | 872 | ||
873 | enum string_value_kind { | ||
874 | k_string, | ||
875 | k_signed, | ||
876 | k_unsigned, | ||
877 | k_invalid | ||
878 | }; | ||
879 | |||
880 | union string_value { | ||
881 | unsigned long long u; | ||
882 | signed long long s; | ||
883 | }; | ||
884 | |||
885 | static enum string_value_kind expr_parse_string(const char *str, | ||
886 | enum symbol_type type, | ||
887 | union string_value *val) | ||
888 | { | ||
889 | char *tail; | ||
890 | enum string_value_kind kind; | ||
891 | |||
892 | errno = 0; | ||
893 | switch (type) { | ||
894 | case S_BOOLEAN: | ||
895 | case S_TRISTATE: | ||
896 | return k_string; | ||
897 | case S_INT: | ||
898 | val->s = strtoll(str, &tail, 10); | ||
899 | kind = k_signed; | ||
900 | break; | ||
901 | case S_HEX: | ||
902 | val->u = strtoull(str, &tail, 16); | ||
903 | kind = k_unsigned; | ||
904 | break; | ||
905 | case S_STRING: | ||
906 | case S_UNKNOWN: | ||
907 | val->s = strtoll(str, &tail, 0); | ||
908 | kind = k_signed; | ||
909 | break; | ||
910 | default: | ||
911 | return k_invalid; | ||
912 | } | ||
913 | return !errno && !*tail && tail > str && isxdigit(tail[-1]) | ||
914 | ? kind : k_string; | ||
915 | } | ||
916 | |||
944 | tristate expr_calc_value(struct expr *e) | 917 | tristate expr_calc_value(struct expr *e) |
945 | { | 918 | { |
946 | tristate val1, val2; | 919 | tristate val1, val2; |
947 | const char *str1, *str2; | 920 | const char *str1, *str2; |
921 | enum string_value_kind k1 = k_string, k2 = k_string; | ||
922 | union string_value lval = {}, rval = {}; | ||
923 | int res; | ||
948 | 924 | ||
949 | if (!e) | 925 | if (!e) |
950 | return yes; | 926 | return yes; |
@@ -965,21 +941,57 @@ tristate expr_calc_value(struct expr *e) | |||
965 | val1 = expr_calc_value(e->left.expr); | 941 | val1 = expr_calc_value(e->left.expr); |
966 | return EXPR_NOT(val1); | 942 | return EXPR_NOT(val1); |
967 | case E_EQUAL: | 943 | case E_EQUAL: |
968 | sym_calc_value(e->left.sym); | 944 | case E_GEQ: |
969 | sym_calc_value(e->right.sym); | 945 | case E_GTH: |
970 | str1 = sym_get_string_value(e->left.sym); | 946 | case E_LEQ: |
971 | str2 = sym_get_string_value(e->right.sym); | 947 | case E_LTH: |
972 | return !strcmp(str1, str2) ? yes : no; | ||
973 | case E_UNEQUAL: | 948 | case E_UNEQUAL: |
974 | sym_calc_value(e->left.sym); | 949 | break; |
975 | sym_calc_value(e->right.sym); | ||
976 | str1 = sym_get_string_value(e->left.sym); | ||
977 | str2 = sym_get_string_value(e->right.sym); | ||
978 | return !strcmp(str1, str2) ? no : yes; | ||
979 | default: | 950 | default: |
980 | printf("expr_calc_value: %d?\n", e->type); | 951 | printf("expr_calc_value: %d?\n", e->type); |
981 | return no; | 952 | return no; |
982 | } | 953 | } |
954 | |||
955 | sym_calc_value(e->left.sym); | ||
956 | sym_calc_value(e->right.sym); | ||
957 | str1 = sym_get_string_value(e->left.sym); | ||
958 | str2 = sym_get_string_value(e->right.sym); | ||
959 | |||
960 | if (e->left.sym->type != S_STRING || e->right.sym->type != S_STRING) { | ||
961 | k1 = expr_parse_string(str1, e->left.sym->type, &lval); | ||
962 | k2 = expr_parse_string(str2, e->right.sym->type, &rval); | ||
963 | } | ||
964 | |||
965 | if (k1 == k_string || k2 == k_string) | ||
966 | res = strcmp(str1, str2); | ||
967 | else if (k1 == k_invalid || k2 == k_invalid) { | ||
968 | if (e->type != E_EQUAL && e->type != E_UNEQUAL) { | ||
969 | printf("Cannot compare \"%s\" and \"%s\"\n", str1, str2); | ||
970 | return no; | ||
971 | } | ||
972 | res = strcmp(str1, str2); | ||
973 | } else if (k1 == k_unsigned || k2 == k_unsigned) | ||
974 | res = (lval.u > rval.u) - (lval.u < rval.u); | ||
975 | else /* if (k1 == k_signed && k2 == k_signed) */ | ||
976 | res = (lval.s > rval.s) - (lval.s < rval.s); | ||
977 | |||
978 | switch(e->type) { | ||
979 | case E_EQUAL: | ||
980 | return res ? no : yes; | ||
981 | case E_GEQ: | ||
982 | return res >= 0 ? yes : no; | ||
983 | case E_GTH: | ||
984 | return res > 0 ? yes : no; | ||
985 | case E_LEQ: | ||
986 | return res <= 0 ? yes : no; | ||
987 | case E_LTH: | ||
988 | return res < 0 ? yes : no; | ||
989 | case E_UNEQUAL: | ||
990 | return res ? yes : no; | ||
991 | default: | ||
992 | printf("expr_calc_value: relation %d?\n", e->type); | ||
993 | return no; | ||
994 | } | ||
983 | } | 995 | } |
984 | 996 | ||
985 | static int expr_compare_type(enum expr_type t1, enum expr_type t2) | 997 | static int expr_compare_type(enum expr_type t1, enum expr_type t2) |
@@ -987,6 +999,12 @@ static int expr_compare_type(enum expr_type t1, enum expr_type t2) | |||
987 | if (t1 == t2) | 999 | if (t1 == t2) |
988 | return 0; | 1000 | return 0; |
989 | switch (t1) { | 1001 | switch (t1) { |
1002 | case E_LEQ: | ||
1003 | case E_LTH: | ||
1004 | case E_GEQ: | ||
1005 | case E_GTH: | ||
1006 | if (t2 == E_EQUAL || t2 == E_UNEQUAL) | ||
1007 | return 1; | ||
990 | case E_EQUAL: | 1008 | case E_EQUAL: |
991 | case E_UNEQUAL: | 1009 | case E_UNEQUAL: |
992 | if (t2 == E_NOT) | 1010 | if (t2 == E_NOT) |
@@ -1080,6 +1098,24 @@ void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char * | |||
1080 | fn(data, NULL, "="); | 1098 | fn(data, NULL, "="); |
1081 | fn(data, e->right.sym, e->right.sym->name); | 1099 | fn(data, e->right.sym, e->right.sym->name); |
1082 | break; | 1100 | break; |
1101 | case E_LEQ: | ||
1102 | case E_LTH: | ||
1103 | if (e->left.sym->name) | ||
1104 | fn(data, e->left.sym, e->left.sym->name); | ||
1105 | else | ||
1106 | fn(data, NULL, "<choice>"); | ||
1107 | fn(data, NULL, e->type == E_LEQ ? "<=" : "<"); | ||
1108 | fn(data, e->right.sym, e->right.sym->name); | ||
1109 | break; | ||
1110 | case E_GEQ: | ||
1111 | case E_GTH: | ||
1112 | if (e->left.sym->name) | ||
1113 | fn(data, e->left.sym, e->left.sym->name); | ||
1114 | else | ||
1115 | fn(data, NULL, "<choice>"); | ||
1116 | fn(data, NULL, e->type == E_LEQ ? ">=" : ">"); | ||
1117 | fn(data, e->right.sym, e->right.sym->name); | ||
1118 | break; | ||
1083 | case E_UNEQUAL: | 1119 | case E_UNEQUAL: |
1084 | if (e->left.sym->name) | 1120 | if (e->left.sym->name) |
1085 | fn(data, e->left.sym, e->left.sym->name); | 1121 | fn(data, e->left.sym, e->left.sym->name); |
diff --git a/scripts/kconfig/expr.h b/scripts/kconfig/expr.h index a2fc96a2bd2c..973b6f733368 100644 --- a/scripts/kconfig/expr.h +++ b/scripts/kconfig/expr.h | |||
@@ -29,7 +29,9 @@ typedef enum tristate { | |||
29 | } tristate; | 29 | } tristate; |
30 | 30 | ||
31 | enum expr_type { | 31 | enum expr_type { |
32 | E_NONE, E_OR, E_AND, E_NOT, E_EQUAL, E_UNEQUAL, E_LIST, E_SYMBOL, E_RANGE | 32 | E_NONE, E_OR, E_AND, E_NOT, |
33 | E_EQUAL, E_UNEQUAL, E_LTH, E_LEQ, E_GTH, E_GEQ, | ||
34 | E_LIST, E_SYMBOL, E_RANGE | ||
33 | }; | 35 | }; |
34 | 36 | ||
35 | union expr_data { | 37 | union expr_data { |
diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c index 6731377f9bb2..70c5ee189dce 100644 --- a/scripts/kconfig/symbol.c +++ b/scripts/kconfig/symbol.c | |||
@@ -1166,6 +1166,10 @@ static struct symbol *sym_check_expr_deps(struct expr *e) | |||
1166 | case E_NOT: | 1166 | case E_NOT: |
1167 | return sym_check_expr_deps(e->left.expr); | 1167 | return sym_check_expr_deps(e->left.expr); |
1168 | case E_EQUAL: | 1168 | case E_EQUAL: |
1169 | case E_GEQ: | ||
1170 | case E_GTH: | ||
1171 | case E_LEQ: | ||
1172 | case E_LTH: | ||
1169 | case E_UNEQUAL: | 1173 | case E_UNEQUAL: |
1170 | sym = sym_check_deps(e->left.sym); | 1174 | sym = sym_check_deps(e->left.sym); |
1171 | if (sym) | 1175 | if (sym) |
diff --git a/scripts/kconfig/zconf.l b/scripts/kconfig/zconf.l index 6c62d93b4ffb..200a3fe30091 100644 --- a/scripts/kconfig/zconf.l +++ b/scripts/kconfig/zconf.l | |||
@@ -122,6 +122,10 @@ n [A-Za-z0-9_] | |||
122 | "!" return T_NOT; | 122 | "!" return T_NOT; |
123 | "=" return T_EQUAL; | 123 | "=" return T_EQUAL; |
124 | "!=" return T_UNEQUAL; | 124 | "!=" return T_UNEQUAL; |
125 | "<=" return T_LESS_EQUAL; | ||
126 | ">=" return T_GREATER_EQUAL; | ||
127 | "<" return T_LESS; | ||
128 | ">" return T_GREATER; | ||
125 | \"|\' { | 129 | \"|\' { |
126 | str = yytext[0]; | 130 | str = yytext[0]; |
127 | new_string(); | 131 | new_string(); |
@@ -141,7 +145,12 @@ n [A-Za-z0-9_] | |||
141 | } | 145 | } |
142 | #.* /* comment */ | 146 | #.* /* comment */ |
143 | \\\n current_file->lineno++; | 147 | \\\n current_file->lineno++; |
144 | . | 148 | [[:blank:]]+ |
149 | . { | ||
150 | fprintf(stderr, | ||
151 | "%s:%d:warning: ignoring unsupported character '%c'\n", | ||
152 | zconf_curname(), zconf_lineno(), *yytext); | ||
153 | } | ||
145 | <<EOF>> { | 154 | <<EOF>> { |
146 | BEGIN(INITIAL); | 155 | BEGIN(INITIAL); |
147 | } | 156 | } |
diff --git a/scripts/kconfig/zconf.lex.c_shipped b/scripts/kconfig/zconf.lex.c_shipped index 349a7f24315b..dd4e86c82521 100644 --- a/scripts/kconfig/zconf.lex.c_shipped +++ b/scripts/kconfig/zconf.lex.c_shipped | |||
@@ -365,323 +365,354 @@ int zconflineno = 1; | |||
365 | 365 | ||
366 | extern char *zconftext; | 366 | extern char *zconftext; |
367 | #define yytext_ptr zconftext | 367 | #define yytext_ptr zconftext |
368 | static yyconst flex_int16_t yy_nxt[][17] = | 368 | static yyconst flex_int16_t yy_nxt[][19] = |
369 | { | 369 | { |
370 | { | 370 | { |
371 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 371 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
372 | 0, 0, 0, 0, 0, 0, 0 | 372 | 0, 0, 0, 0, 0, 0, 0, 0, 0 |
373 | }, | 373 | }, |
374 | 374 | ||
375 | { | 375 | { |
376 | 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, | 376 | 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, |
377 | 12, 12, 12, 12, 12, 12, 12 | 377 | 12, 12, 12, 12, 12, 12, 12, 12, 12 |
378 | }, | 378 | }, |
379 | 379 | ||
380 | { | 380 | { |
381 | 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, | 381 | 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, |
382 | 12, 12, 12, 12, 12, 12, 12 | 382 | 12, 12, 12, 12, 12, 12, 12, 12, 12 |
383 | }, | 383 | }, |
384 | 384 | ||
385 | { | 385 | { |
386 | 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, | 386 | 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, |
387 | 16, 16, 16, 18, 16, 16, 16 | 387 | 16, 16, 16, 18, 16, 16, 16, 16, 16 |
388 | }, | 388 | }, |
389 | 389 | ||
390 | { | 390 | { |
391 | 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, | 391 | 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, |
392 | 16, 16, 16, 18, 16, 16, 16 | 392 | 16, 16, 16, 18, 16, 16, 16, 16, 16 |
393 | 393 | ||
394 | }, | 394 | }, |
395 | 395 | ||
396 | { | 396 | { |
397 | 11, 19, 20, 21, 19, 19, 19, 19, 19, 19, | 397 | 11, 19, 20, 21, 19, 19, 19, 19, 19, 19, |
398 | 19, 19, 19, 19, 19, 19, 19 | 398 | 19, 19, 19, 19, 19, 19, 19, 19, 19 |
399 | }, | 399 | }, |
400 | 400 | ||
401 | { | 401 | { |
402 | 11, 19, 20, 21, 19, 19, 19, 19, 19, 19, | 402 | 11, 19, 20, 21, 19, 19, 19, 19, 19, 19, |
403 | 19, 19, 19, 19, 19, 19, 19 | 403 | 19, 19, 19, 19, 19, 19, 19, 19, 19 |
404 | }, | 404 | }, |
405 | 405 | ||
406 | { | 406 | { |
407 | 11, 22, 22, 23, 22, 24, 22, 22, 24, 22, | 407 | 11, 22, 22, 23, 22, 24, 22, 22, 24, 22, |
408 | 22, 22, 22, 22, 22, 25, 22 | 408 | 22, 22, 22, 22, 22, 22, 22, 25, 22 |
409 | }, | 409 | }, |
410 | 410 | ||
411 | { | 411 | { |
412 | 11, 22, 22, 23, 22, 24, 22, 22, 24, 22, | 412 | 11, 22, 22, 23, 22, 24, 22, 22, 24, 22, |
413 | 22, 22, 22, 22, 22, 25, 22 | 413 | 22, 22, 22, 22, 22, 22, 22, 25, 22 |
414 | }, | 414 | }, |
415 | 415 | ||
416 | { | 416 | { |
417 | 11, 26, 26, 27, 28, 29, 30, 31, 29, 32, | 417 | 11, 26, 27, 28, 29, 30, 31, 32, 30, 33, |
418 | 33, 34, 35, 35, 36, 37, 38 | 418 | 34, 35, 36, 36, 37, 38, 39, 40, 41 |
419 | 419 | ||
420 | }, | 420 | }, |
421 | 421 | ||
422 | { | 422 | { |
423 | 11, 26, 26, 27, 28, 29, 30, 31, 29, 32, | 423 | 11, 26, 27, 28, 29, 30, 31, 32, 30, 33, |
424 | 33, 34, 35, 35, 36, 37, 38 | 424 | 34, 35, 36, 36, 37, 38, 39, 40, 41 |
425 | }, | 425 | }, |
426 | 426 | ||
427 | { | 427 | { |
428 | -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, | 428 | -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, |
429 | -11, -11, -11, -11, -11, -11, -11 | 429 | -11, -11, -11, -11, -11, -11, -11, -11, -11 |
430 | }, | 430 | }, |
431 | 431 | ||
432 | { | 432 | { |
433 | 11, -12, -12, -12, -12, -12, -12, -12, -12, -12, | 433 | 11, -12, -12, -12, -12, -12, -12, -12, -12, -12, |
434 | -12, -12, -12, -12, -12, -12, -12 | 434 | -12, -12, -12, -12, -12, -12, -12, -12, -12 |
435 | }, | 435 | }, |
436 | 436 | ||
437 | { | 437 | { |
438 | 11, -13, 39, 40, -13, -13, 41, -13, -13, -13, | 438 | 11, -13, 42, 43, -13, -13, 44, -13, -13, -13, |
439 | -13, -13, -13, -13, -13, -13, -13 | 439 | -13, -13, -13, -13, -13, -13, -13, -13, -13 |
440 | }, | 440 | }, |
441 | 441 | ||
442 | { | 442 | { |
443 | 11, -14, -14, -14, -14, -14, -14, -14, -14, -14, | 443 | 11, -14, -14, -14, -14, -14, -14, -14, -14, -14, |
444 | -14, -14, -14, -14, -14, -14, -14 | 444 | -14, -14, -14, -14, -14, -14, -14, -14, -14 |
445 | 445 | ||
446 | }, | 446 | }, |
447 | 447 | ||
448 | { | 448 | { |
449 | 11, 42, 42, 43, 42, 42, 42, 42, 42, 42, | 449 | 11, 45, 45, 46, 45, 45, 45, 45, 45, 45, |
450 | 42, 42, 42, 42, 42, 42, 42 | 450 | 45, 45, 45, 45, 45, 45, 45, 45, 45 |
451 | }, | 451 | }, |
452 | 452 | ||
453 | { | 453 | { |
454 | 11, -16, -16, -16, -16, -16, -16, -16, -16, -16, | 454 | 11, -16, -16, -16, -16, -16, -16, -16, -16, -16, |
455 | -16, -16, -16, -16, -16, -16, -16 | 455 | -16, -16, -16, -16, -16, -16, -16, -16, -16 |
456 | }, | 456 | }, |
457 | 457 | ||
458 | { | 458 | { |
459 | 11, -17, -17, -17, -17, -17, -17, -17, -17, -17, | 459 | 11, -17, -17, -17, -17, -17, -17, -17, -17, -17, |
460 | -17, -17, -17, -17, -17, -17, -17 | 460 | -17, -17, -17, -17, -17, -17, -17, -17, -17 |
461 | }, | 461 | }, |
462 | 462 | ||
463 | { | 463 | { |
464 | 11, -18, -18, -18, -18, -18, -18, -18, -18, -18, | 464 | 11, -18, -18, -18, -18, -18, -18, -18, -18, -18, |
465 | -18, -18, -18, 44, -18, -18, -18 | 465 | -18, -18, -18, 47, -18, -18, -18, -18, -18 |
466 | }, | 466 | }, |
467 | 467 | ||
468 | { | 468 | { |
469 | 11, 45, 45, -19, 45, 45, 45, 45, 45, 45, | 469 | 11, 48, 48, -19, 48, 48, 48, 48, 48, 48, |
470 | 45, 45, 45, 45, 45, 45, 45 | 470 | 48, 48, 48, 48, 48, 48, 48, 48, 48 |
471 | 471 | ||
472 | }, | 472 | }, |
473 | 473 | ||
474 | { | 474 | { |
475 | 11, -20, 46, 47, -20, -20, -20, -20, -20, -20, | 475 | 11, -20, 49, 50, -20, -20, -20, -20, -20, -20, |
476 | -20, -20, -20, -20, -20, -20, -20 | 476 | -20, -20, -20, -20, -20, -20, -20, -20, -20 |
477 | }, | 477 | }, |
478 | 478 | ||
479 | { | 479 | { |
480 | 11, 48, -21, -21, 48, 48, 48, 48, 48, 48, | 480 | 11, 51, -21, -21, 51, 51, 51, 51, 51, 51, |
481 | 48, 48, 48, 48, 48, 48, 48 | 481 | 51, 51, 51, 51, 51, 51, 51, 51, 51 |
482 | }, | 482 | }, |
483 | 483 | ||
484 | { | 484 | { |
485 | 11, 49, 49, 50, 49, -22, 49, 49, -22, 49, | 485 | 11, 52, 52, 53, 52, -22, 52, 52, -22, 52, |
486 | 49, 49, 49, 49, 49, -22, 49 | 486 | 52, 52, 52, 52, 52, 52, 52, -22, 52 |
487 | }, | 487 | }, |
488 | 488 | ||
489 | { | 489 | { |
490 | 11, -23, -23, -23, -23, -23, -23, -23, -23, -23, | 490 | 11, -23, -23, -23, -23, -23, -23, -23, -23, -23, |
491 | -23, -23, -23, -23, -23, -23, -23 | 491 | -23, -23, -23, -23, -23, -23, -23, -23, -23 |
492 | }, | 492 | }, |
493 | 493 | ||
494 | { | 494 | { |
495 | 11, -24, -24, -24, -24, -24, -24, -24, -24, -24, | 495 | 11, -24, -24, -24, -24, -24, -24, -24, -24, -24, |
496 | -24, -24, -24, -24, -24, -24, -24 | 496 | -24, -24, -24, -24, -24, -24, -24, -24, -24 |
497 | 497 | ||
498 | }, | 498 | }, |
499 | 499 | ||
500 | { | 500 | { |
501 | 11, 51, 51, 52, 51, 51, 51, 51, 51, 51, | 501 | 11, 54, 54, 55, 54, 54, 54, 54, 54, 54, |
502 | 51, 51, 51, 51, 51, 51, 51 | 502 | 54, 54, 54, 54, 54, 54, 54, 54, 54 |
503 | }, | 503 | }, |
504 | 504 | ||
505 | { | 505 | { |
506 | 11, -26, -26, -26, -26, -26, -26, -26, -26, -26, | 506 | 11, -26, -26, -26, -26, -26, -26, -26, -26, -26, |
507 | -26, -26, -26, -26, -26, -26, -26 | 507 | -26, -26, -26, -26, -26, -26, -26, -26, -26 |
508 | }, | 508 | }, |
509 | 509 | ||
510 | { | 510 | { |
511 | 11, -27, -27, -27, -27, -27, -27, -27, -27, -27, | 511 | 11, -27, 56, -27, -27, -27, -27, -27, -27, -27, |
512 | -27, -27, -27, -27, -27, -27, -27 | 512 | -27, -27, -27, -27, -27, -27, -27, -27, -27 |
513 | }, | 513 | }, |
514 | 514 | ||
515 | { | 515 | { |
516 | 11, -28, -28, -28, -28, -28, -28, -28, -28, -28, | 516 | 11, -28, -28, -28, -28, -28, -28, -28, -28, -28, |
517 | -28, -28, -28, -28, 53, -28, -28 | 517 | -28, -28, -28, -28, -28, -28, -28, -28, -28 |
518 | }, | 518 | }, |
519 | 519 | ||
520 | { | 520 | { |
521 | 11, -29, -29, -29, -29, -29, -29, -29, -29, -29, | 521 | 11, -29, -29, -29, -29, -29, -29, -29, -29, -29, |
522 | -29, -29, -29, -29, -29, -29, -29 | 522 | -29, -29, -29, -29, -29, 57, -29, -29, -29 |
523 | 523 | ||
524 | }, | 524 | }, |
525 | 525 | ||
526 | { | 526 | { |
527 | 11, 54, 54, -30, 54, 54, 54, 54, 54, 54, | 527 | 11, -30, -30, -30, -30, -30, -30, -30, -30, -30, |
528 | 54, 54, 54, 54, 54, 54, 54 | 528 | -30, -30, -30, -30, -30, -30, -30, -30, -30 |
529 | }, | 529 | }, |
530 | 530 | ||
531 | { | 531 | { |
532 | 11, -31, -31, -31, -31, -31, -31, 55, -31, -31, | 532 | 11, 58, 58, -31, 58, 58, 58, 58, 58, 58, |
533 | -31, -31, -31, -31, -31, -31, -31 | 533 | 58, 58, 58, 58, 58, 58, 58, 58, 58 |
534 | }, | 534 | }, |
535 | 535 | ||
536 | { | 536 | { |
537 | 11, -32, -32, -32, -32, -32, -32, -32, -32, -32, | 537 | 11, -32, -32, -32, -32, -32, -32, 59, -32, -32, |
538 | -32, -32, -32, -32, -32, -32, -32 | 538 | -32, -32, -32, -32, -32, -32, -32, -32, -32 |
539 | }, | 539 | }, |
540 | 540 | ||
541 | { | 541 | { |
542 | 11, -33, -33, -33, -33, -33, -33, -33, -33, -33, | 542 | 11, -33, -33, -33, -33, -33, -33, -33, -33, -33, |
543 | -33, -33, -33, -33, -33, -33, -33 | 543 | -33, -33, -33, -33, -33, -33, -33, -33, -33 |
544 | }, | 544 | }, |
545 | 545 | ||
546 | { | 546 | { |
547 | 11, -34, -34, -34, -34, -34, -34, -34, -34, -34, | 547 | 11, -34, -34, -34, -34, -34, -34, -34, -34, -34, |
548 | -34, 56, 57, 57, -34, -34, -34 | 548 | -34, -34, -34, -34, -34, -34, -34, -34, -34 |
549 | 549 | ||
550 | }, | 550 | }, |
551 | 551 | ||
552 | { | 552 | { |
553 | 11, -35, -35, -35, -35, -35, -35, -35, -35, -35, | 553 | 11, -35, -35, -35, -35, -35, -35, -35, -35, -35, |
554 | -35, 57, 57, 57, -35, -35, -35 | 554 | -35, 60, 61, 61, -35, -35, -35, -35, -35 |
555 | }, | 555 | }, |
556 | 556 | ||
557 | { | 557 | { |
558 | 11, -36, -36, -36, -36, -36, -36, -36, -36, -36, | 558 | 11, -36, -36, -36, -36, -36, -36, -36, -36, -36, |
559 | -36, -36, -36, -36, -36, -36, -36 | 559 | -36, 61, 61, 61, -36, -36, -36, -36, -36 |
560 | }, | 560 | }, |
561 | 561 | ||
562 | { | 562 | { |
563 | 11, -37, -37, 58, -37, -37, -37, -37, -37, -37, | 563 | 11, -37, -37, -37, -37, -37, -37, -37, -37, -37, |
564 | -37, -37, -37, -37, -37, -37, -37 | 564 | -37, -37, -37, -37, -37, 62, -37, -37, -37 |
565 | }, | 565 | }, |
566 | 566 | ||
567 | { | 567 | { |
568 | 11, -38, -38, -38, -38, -38, -38, -38, -38, -38, | 568 | 11, -38, -38, -38, -38, -38, -38, -38, -38, -38, |
569 | -38, -38, -38, -38, -38, -38, 59 | 569 | -38, -38, -38, -38, -38, -38, -38, -38, -38 |
570 | }, | 570 | }, |
571 | 571 | ||
572 | { | 572 | { |
573 | 11, -39, 39, 40, -39, -39, 41, -39, -39, -39, | 573 | 11, -39, -39, -39, -39, -39, -39, -39, -39, -39, |
574 | -39, -39, -39, -39, -39, -39, -39 | 574 | -39, -39, -39, -39, -39, 63, -39, -39, -39 |
575 | 575 | ||
576 | }, | 576 | }, |
577 | 577 | ||
578 | { | 578 | { |
579 | 11, -40, -40, -40, -40, -40, -40, -40, -40, -40, | 579 | 11, -40, -40, 64, -40, -40, -40, -40, -40, -40, |
580 | -40, -40, -40, -40, -40, -40, -40 | 580 | -40, -40, -40, -40, -40, -40, -40, -40, -40 |
581 | }, | 581 | }, |
582 | 582 | ||
583 | { | 583 | { |
584 | 11, 42, 42, 43, 42, 42, 42, 42, 42, 42, | 584 | 11, -41, -41, -41, -41, -41, -41, -41, -41, -41, |
585 | 42, 42, 42, 42, 42, 42, 42 | 585 | -41, -41, -41, -41, -41, -41, -41, -41, 65 |
586 | }, | 586 | }, |
587 | 587 | ||
588 | { | 588 | { |
589 | 11, 42, 42, 43, 42, 42, 42, 42, 42, 42, | 589 | 11, -42, 42, 43, -42, -42, 44, -42, -42, -42, |
590 | 42, 42, 42, 42, 42, 42, 42 | 590 | -42, -42, -42, -42, -42, -42, -42, -42, -42 |
591 | }, | 591 | }, |
592 | 592 | ||
593 | { | 593 | { |
594 | 11, -43, -43, -43, -43, -43, -43, -43, -43, -43, | 594 | 11, -43, -43, -43, -43, -43, -43, -43, -43, -43, |
595 | -43, -43, -43, -43, -43, -43, -43 | 595 | -43, -43, -43, -43, -43, -43, -43, -43, -43 |
596 | }, | 596 | }, |
597 | 597 | ||
598 | { | 598 | { |
599 | 11, -44, -44, -44, -44, -44, -44, -44, -44, -44, | 599 | 11, 45, 45, 46, 45, 45, 45, 45, 45, 45, |
600 | -44, -44, -44, 44, -44, -44, -44 | 600 | 45, 45, 45, 45, 45, 45, 45, 45, 45 |
601 | 601 | ||
602 | }, | 602 | }, |
603 | 603 | ||
604 | { | 604 | { |
605 | 11, 45, 45, -45, 45, 45, 45, 45, 45, 45, | 605 | 11, 45, 45, 46, 45, 45, 45, 45, 45, 45, |
606 | 45, 45, 45, 45, 45, 45, 45 | 606 | 45, 45, 45, 45, 45, 45, 45, 45, 45 |
607 | }, | 607 | }, |
608 | 608 | ||
609 | { | 609 | { |
610 | 11, -46, 46, 47, -46, -46, -46, -46, -46, -46, | 610 | 11, -46, -46, -46, -46, -46, -46, -46, -46, -46, |
611 | -46, -46, -46, -46, -46, -46, -46 | 611 | -46, -46, -46, -46, -46, -46, -46, -46, -46 |
612 | }, | 612 | }, |
613 | 613 | ||
614 | { | 614 | { |
615 | 11, 48, -47, -47, 48, 48, 48, 48, 48, 48, | 615 | 11, -47, -47, -47, -47, -47, -47, -47, -47, -47, |
616 | 48, 48, 48, 48, 48, 48, 48 | 616 | -47, -47, -47, 47, -47, -47, -47, -47, -47 |
617 | }, | 617 | }, |
618 | 618 | ||
619 | { | 619 | { |
620 | 11, -48, -48, -48, -48, -48, -48, -48, -48, -48, | 620 | 11, 48, 48, -48, 48, 48, 48, 48, 48, 48, |
621 | -48, -48, -48, -48, -48, -48, -48 | 621 | 48, 48, 48, 48, 48, 48, 48, 48, 48 |
622 | }, | 622 | }, |
623 | 623 | ||
624 | { | 624 | { |
625 | 11, 49, 49, 50, 49, -49, 49, 49, -49, 49, | 625 | 11, -49, 49, 50, -49, -49, -49, -49, -49, -49, |
626 | 49, 49, 49, 49, 49, -49, 49 | 626 | -49, -49, -49, -49, -49, -49, -49, -49, -49 |
627 | 627 | ||
628 | }, | 628 | }, |
629 | 629 | ||
630 | { | 630 | { |
631 | 11, -50, -50, -50, -50, -50, -50, -50, -50, -50, | 631 | 11, 51, -50, -50, 51, 51, 51, 51, 51, 51, |
632 | -50, -50, -50, -50, -50, -50, -50 | 632 | 51, 51, 51, 51, 51, 51, 51, 51, 51 |
633 | }, | 633 | }, |
634 | 634 | ||
635 | { | 635 | { |
636 | 11, -51, -51, 52, -51, -51, -51, -51, -51, -51, | 636 | 11, -51, -51, -51, -51, -51, -51, -51, -51, -51, |
637 | -51, -51, -51, -51, -51, -51, -51 | 637 | -51, -51, -51, -51, -51, -51, -51, -51, -51 |
638 | }, | 638 | }, |
639 | 639 | ||
640 | { | 640 | { |
641 | 11, -52, -52, -52, -52, -52, -52, -52, -52, -52, | 641 | 11, 52, 52, 53, 52, -52, 52, 52, -52, 52, |
642 | -52, -52, -52, -52, -52, -52, -52 | 642 | 52, 52, 52, 52, 52, 52, 52, -52, 52 |
643 | }, | 643 | }, |
644 | 644 | ||
645 | { | 645 | { |
646 | 11, -53, -53, -53, -53, -53, -53, -53, -53, -53, | 646 | 11, -53, -53, -53, -53, -53, -53, -53, -53, -53, |
647 | -53, -53, -53, -53, -53, -53, -53 | 647 | -53, -53, -53, -53, -53, -53, -53, -53, -53 |
648 | }, | 648 | }, |
649 | 649 | ||
650 | { | 650 | { |
651 | 11, 54, 54, -54, 54, 54, 54, 54, 54, 54, | 651 | 11, -54, -54, 55, -54, -54, -54, -54, -54, -54, |
652 | 54, 54, 54, 54, 54, 54, 54 | 652 | -54, -54, -54, -54, -54, -54, -54, -54, -54 |
653 | 653 | ||
654 | }, | 654 | }, |
655 | 655 | ||
656 | { | 656 | { |
657 | 11, -55, -55, -55, -55, -55, -55, -55, -55, -55, | 657 | 11, -55, -55, -55, -55, -55, -55, -55, -55, -55, |
658 | -55, -55, -55, -55, -55, -55, -55 | 658 | -55, -55, -55, -55, -55, -55, -55, -55, -55 |
659 | }, | 659 | }, |
660 | 660 | ||
661 | { | 661 | { |
662 | 11, -56, -56, -56, -56, -56, -56, -56, -56, -56, | 662 | 11, -56, 56, -56, -56, -56, -56, -56, -56, -56, |
663 | -56, 60, 57, 57, -56, -56, -56 | 663 | -56, -56, -56, -56, -56, -56, -56, -56, -56 |
664 | }, | 664 | }, |
665 | 665 | ||
666 | { | 666 | { |
667 | 11, -57, -57, -57, -57, -57, -57, -57, -57, -57, | 667 | 11, -57, -57, -57, -57, -57, -57, -57, -57, -57, |
668 | -57, 57, 57, 57, -57, -57, -57 | 668 | -57, -57, -57, -57, -57, -57, -57, -57, -57 |
669 | }, | 669 | }, |
670 | 670 | ||
671 | { | 671 | { |
672 | 11, -58, -58, -58, -58, -58, -58, -58, -58, -58, | 672 | 11, 58, 58, -58, 58, 58, 58, 58, 58, 58, |
673 | -58, -58, -58, -58, -58, -58, -58 | 673 | 58, 58, 58, 58, 58, 58, 58, 58, 58 |
674 | }, | 674 | }, |
675 | 675 | ||
676 | { | 676 | { |
677 | 11, -59, -59, -59, -59, -59, -59, -59, -59, -59, | 677 | 11, -59, -59, -59, -59, -59, -59, -59, -59, -59, |
678 | -59, -59, -59, -59, -59, -59, -59 | 678 | -59, -59, -59, -59, -59, -59, -59, -59, -59 |
679 | 679 | ||
680 | }, | 680 | }, |
681 | 681 | ||
682 | { | 682 | { |
683 | 11, -60, -60, -60, -60, -60, -60, -60, -60, -60, | 683 | 11, -60, -60, -60, -60, -60, -60, -60, -60, -60, |
684 | -60, 57, 57, 57, -60, -60, -60 | 684 | -60, 66, 61, 61, -60, -60, -60, -60, -60 |
685 | }, | ||
686 | |||
687 | { | ||
688 | 11, -61, -61, -61, -61, -61, -61, -61, -61, -61, | ||
689 | -61, 61, 61, 61, -61, -61, -61, -61, -61 | ||
690 | }, | ||
691 | |||
692 | { | ||
693 | 11, -62, -62, -62, -62, -62, -62, -62, -62, -62, | ||
694 | -62, -62, -62, -62, -62, -62, -62, -62, -62 | ||
695 | }, | ||
696 | |||
697 | { | ||
698 | 11, -63, -63, -63, -63, -63, -63, -63, -63, -63, | ||
699 | -63, -63, -63, -63, -63, -63, -63, -63, -63 | ||
700 | }, | ||
701 | |||
702 | { | ||
703 | 11, -64, -64, -64, -64, -64, -64, -64, -64, -64, | ||
704 | -64, -64, -64, -64, -64, -64, -64, -64, -64 | ||
705 | |||
706 | }, | ||
707 | |||
708 | { | ||
709 | 11, -65, -65, -65, -65, -65, -65, -65, -65, -65, | ||
710 | -65, -65, -65, -65, -65, -65, -65, -65, -65 | ||
711 | }, | ||
712 | |||
713 | { | ||
714 | 11, -66, -66, -66, -66, -66, -66, -66, -66, -66, | ||
715 | -66, 61, 61, 61, -66, -66, -66, -66, -66 | ||
685 | }, | 716 | }, |
686 | 717 | ||
687 | } ; | 718 | } ; |
@@ -701,8 +732,8 @@ static void yy_fatal_error (yyconst char msg[] ); | |||
701 | *yy_cp = '\0'; \ | 732 | *yy_cp = '\0'; \ |
702 | (yy_c_buf_p) = yy_cp; | 733 | (yy_c_buf_p) = yy_cp; |
703 | 734 | ||
704 | #define YY_NUM_RULES 33 | 735 | #define YY_NUM_RULES 38 |
705 | #define YY_END_OF_BUFFER 34 | 736 | #define YY_END_OF_BUFFER 39 |
706 | /* This struct is not used in this scanner, | 737 | /* This struct is not used in this scanner, |
707 | but its presence is necessary. */ | 738 | but its presence is necessary. */ |
708 | struct yy_trans_info | 739 | struct yy_trans_info |
@@ -710,14 +741,15 @@ struct yy_trans_info | |||
710 | flex_int32_t yy_verify; | 741 | flex_int32_t yy_verify; |
711 | flex_int32_t yy_nxt; | 742 | flex_int32_t yy_nxt; |
712 | }; | 743 | }; |
713 | static yyconst flex_int16_t yy_accept[61] = | 744 | static yyconst flex_int16_t yy_accept[67] = |
714 | { 0, | 745 | { 0, |
715 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 746 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
716 | 34, 5, 4, 2, 3, 7, 8, 6, 32, 29, | 747 | 39, 5, 4, 2, 3, 7, 8, 6, 37, 34, |
717 | 31, 24, 28, 27, 26, 22, 17, 13, 16, 20, | 748 | 36, 29, 33, 32, 31, 27, 26, 21, 13, 20, |
718 | 22, 11, 12, 19, 19, 14, 22, 22, 4, 2, | 749 | 24, 27, 11, 12, 23, 23, 18, 14, 19, 27, |
719 | 3, 3, 1, 6, 32, 29, 31, 30, 24, 23, | 750 | 27, 4, 2, 3, 3, 1, 6, 37, 34, 36, |
720 | 26, 25, 15, 20, 9, 19, 19, 21, 10, 18 | 751 | 35, 29, 28, 31, 30, 26, 15, 24, 9, 23, |
752 | 23, 16, 17, 25, 10, 22 | ||
721 | } ; | 753 | } ; |
722 | 754 | ||
723 | static yyconst flex_int32_t yy_ec[256] = | 755 | static yyconst flex_int32_t yy_ec[256] = |
@@ -727,15 +759,15 @@ static yyconst flex_int32_t yy_ec[256] = | |||
727 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 759 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
728 | 1, 2, 4, 5, 6, 1, 1, 7, 8, 9, | 760 | 1, 2, 4, 5, 6, 1, 1, 7, 8, 9, |
729 | 10, 1, 1, 1, 11, 12, 12, 13, 13, 13, | 761 | 10, 1, 1, 1, 11, 12, 12, 13, 13, 13, |
730 | 13, 13, 13, 13, 13, 13, 13, 1, 1, 1, | 762 | 13, 13, 13, 13, 13, 13, 13, 1, 1, 14, |
731 | 14, 1, 1, 1, 13, 13, 13, 13, 13, 13, | 763 | 15, 16, 1, 1, 13, 13, 13, 13, 13, 13, |
732 | 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, | 764 | 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, |
733 | 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, | 765 | 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, |
734 | 1, 15, 1, 1, 13, 1, 13, 13, 13, 13, | 766 | 1, 17, 1, 1, 13, 1, 13, 13, 13, 13, |
735 | 767 | ||
736 | 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, | 768 | 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, |
737 | 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, | 769 | 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, |
738 | 13, 13, 1, 16, 1, 1, 1, 1, 1, 1, | 770 | 13, 13, 1, 18, 1, 1, 1, 1, 1, 1, |
739 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 771 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
740 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 772 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
741 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 773 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
@@ -920,7 +952,7 @@ static int input (void ); | |||
920 | /* This used to be an fputs(), but since the string might contain NUL's, | 952 | /* This used to be an fputs(), but since the string might contain NUL's, |
921 | * we now use fwrite(). | 953 | * we now use fwrite(). |
922 | */ | 954 | */ |
923 | #define ECHO do { if (fwrite( zconftext, zconfleng, 1, zconfout )) {} } while (0) | 955 | #define ECHO fwrite( zconftext, zconfleng, 1, zconfout ) |
924 | #endif | 956 | #endif |
925 | 957 | ||
926 | /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, | 958 | /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, |
@@ -1142,22 +1174,38 @@ return T_UNEQUAL; | |||
1142 | YY_BREAK | 1174 | YY_BREAK |
1143 | case 16: | 1175 | case 16: |
1144 | YY_RULE_SETUP | 1176 | YY_RULE_SETUP |
1177 | return T_LESS_EQUAL; | ||
1178 | YY_BREAK | ||
1179 | case 17: | ||
1180 | YY_RULE_SETUP | ||
1181 | return T_GREATER_EQUAL; | ||
1182 | YY_BREAK | ||
1183 | case 18: | ||
1184 | YY_RULE_SETUP | ||
1185 | return T_LESS; | ||
1186 | YY_BREAK | ||
1187 | case 19: | ||
1188 | YY_RULE_SETUP | ||
1189 | return T_GREATER; | ||
1190 | YY_BREAK | ||
1191 | case 20: | ||
1192 | YY_RULE_SETUP | ||
1145 | { | 1193 | { |
1146 | str = zconftext[0]; | 1194 | str = zconftext[0]; |
1147 | new_string(); | 1195 | new_string(); |
1148 | BEGIN(STRING); | 1196 | BEGIN(STRING); |
1149 | } | 1197 | } |
1150 | YY_BREAK | 1198 | YY_BREAK |
1151 | case 17: | 1199 | case 21: |
1152 | /* rule 17 can match eol */ | 1200 | /* rule 21 can match eol */ |
1153 | YY_RULE_SETUP | 1201 | YY_RULE_SETUP |
1154 | BEGIN(INITIAL); current_file->lineno++; return T_EOL; | 1202 | BEGIN(INITIAL); current_file->lineno++; return T_EOL; |
1155 | YY_BREAK | 1203 | YY_BREAK |
1156 | case 18: | 1204 | case 22: |
1157 | YY_RULE_SETUP | 1205 | YY_RULE_SETUP |
1158 | /* ignore */ | 1206 | /* ignore */ |
1159 | YY_BREAK | 1207 | YY_BREAK |
1160 | case 19: | 1208 | case 23: |
1161 | YY_RULE_SETUP | 1209 | YY_RULE_SETUP |
1162 | { | 1210 | { |
1163 | const struct kconf_id *id = kconf_id_lookup(zconftext, zconfleng); | 1211 | const struct kconf_id *id = kconf_id_lookup(zconftext, zconfleng); |
@@ -1170,27 +1218,35 @@ YY_RULE_SETUP | |||
1170 | return T_WORD; | 1218 | return T_WORD; |
1171 | } | 1219 | } |
1172 | YY_BREAK | 1220 | YY_BREAK |
1173 | case 20: | 1221 | case 24: |
1174 | YY_RULE_SETUP | 1222 | YY_RULE_SETUP |
1175 | /* comment */ | 1223 | /* comment */ |
1176 | YY_BREAK | 1224 | YY_BREAK |
1177 | case 21: | 1225 | case 25: |
1178 | /* rule 21 can match eol */ | 1226 | /* rule 25 can match eol */ |
1179 | YY_RULE_SETUP | 1227 | YY_RULE_SETUP |
1180 | current_file->lineno++; | 1228 | current_file->lineno++; |
1181 | YY_BREAK | 1229 | YY_BREAK |
1182 | case 22: | 1230 | case 26: |
1183 | YY_RULE_SETUP | 1231 | YY_RULE_SETUP |
1184 | 1232 | ||
1185 | YY_BREAK | 1233 | YY_BREAK |
1234 | case 27: | ||
1235 | YY_RULE_SETUP | ||
1236 | { | ||
1237 | fprintf(stderr, | ||
1238 | "%s:%d:warning: ignoring unsupported character '%c'\n", | ||
1239 | zconf_curname(), zconf_lineno(), *zconftext); | ||
1240 | } | ||
1241 | YY_BREAK | ||
1186 | case YY_STATE_EOF(PARAM): | 1242 | case YY_STATE_EOF(PARAM): |
1187 | { | 1243 | { |
1188 | BEGIN(INITIAL); | 1244 | BEGIN(INITIAL); |
1189 | } | 1245 | } |
1190 | YY_BREAK | 1246 | YY_BREAK |
1191 | 1247 | ||
1192 | case 23: | 1248 | case 28: |
1193 | /* rule 23 can match eol */ | 1249 | /* rule 28 can match eol */ |
1194 | *yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */ | 1250 | *yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */ |
1195 | (yy_c_buf_p) = yy_cp -= 1; | 1251 | (yy_c_buf_p) = yy_cp -= 1; |
1196 | YY_DO_BEFORE_ACTION; /* set up zconftext again */ | 1252 | YY_DO_BEFORE_ACTION; /* set up zconftext again */ |
@@ -1201,14 +1257,14 @@ YY_RULE_SETUP | |||
1201 | return T_WORD_QUOTE; | 1257 | return T_WORD_QUOTE; |
1202 | } | 1258 | } |
1203 | YY_BREAK | 1259 | YY_BREAK |
1204 | case 24: | 1260 | case 29: |
1205 | YY_RULE_SETUP | 1261 | YY_RULE_SETUP |
1206 | { | 1262 | { |
1207 | append_string(zconftext, zconfleng); | 1263 | append_string(zconftext, zconfleng); |
1208 | } | 1264 | } |
1209 | YY_BREAK | 1265 | YY_BREAK |
1210 | case 25: | 1266 | case 30: |
1211 | /* rule 25 can match eol */ | 1267 | /* rule 30 can match eol */ |
1212 | *yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */ | 1268 | *yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */ |
1213 | (yy_c_buf_p) = yy_cp -= 1; | 1269 | (yy_c_buf_p) = yy_cp -= 1; |
1214 | YY_DO_BEFORE_ACTION; /* set up zconftext again */ | 1270 | YY_DO_BEFORE_ACTION; /* set up zconftext again */ |
@@ -1219,13 +1275,13 @@ YY_RULE_SETUP | |||
1219 | return T_WORD_QUOTE; | 1275 | return T_WORD_QUOTE; |
1220 | } | 1276 | } |
1221 | YY_BREAK | 1277 | YY_BREAK |
1222 | case 26: | 1278 | case 31: |
1223 | YY_RULE_SETUP | 1279 | YY_RULE_SETUP |
1224 | { | 1280 | { |
1225 | append_string(zconftext + 1, zconfleng - 1); | 1281 | append_string(zconftext + 1, zconfleng - 1); |
1226 | } | 1282 | } |
1227 | YY_BREAK | 1283 | YY_BREAK |
1228 | case 27: | 1284 | case 32: |
1229 | YY_RULE_SETUP | 1285 | YY_RULE_SETUP |
1230 | { | 1286 | { |
1231 | if (str == zconftext[0]) { | 1287 | if (str == zconftext[0]) { |
@@ -1236,8 +1292,8 @@ YY_RULE_SETUP | |||
1236 | append_string(zconftext, 1); | 1292 | append_string(zconftext, 1); |
1237 | } | 1293 | } |
1238 | YY_BREAK | 1294 | YY_BREAK |
1239 | case 28: | 1295 | case 33: |
1240 | /* rule 28 can match eol */ | 1296 | /* rule 33 can match eol */ |
1241 | YY_RULE_SETUP | 1297 | YY_RULE_SETUP |
1242 | { | 1298 | { |
1243 | printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno()); | 1299 | printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno()); |
@@ -1252,7 +1308,7 @@ case YY_STATE_EOF(STRING): | |||
1252 | } | 1308 | } |
1253 | YY_BREAK | 1309 | YY_BREAK |
1254 | 1310 | ||
1255 | case 29: | 1311 | case 34: |
1256 | YY_RULE_SETUP | 1312 | YY_RULE_SETUP |
1257 | { | 1313 | { |
1258 | ts = 0; | 1314 | ts = 0; |
@@ -1277,8 +1333,8 @@ YY_RULE_SETUP | |||
1277 | } | 1333 | } |
1278 | } | 1334 | } |
1279 | YY_BREAK | 1335 | YY_BREAK |
1280 | case 30: | 1336 | case 35: |
1281 | /* rule 30 can match eol */ | 1337 | /* rule 35 can match eol */ |
1282 | *yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */ | 1338 | *yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */ |
1283 | (yy_c_buf_p) = yy_cp -= 1; | 1339 | (yy_c_buf_p) = yy_cp -= 1; |
1284 | YY_DO_BEFORE_ACTION; /* set up zconftext again */ | 1340 | YY_DO_BEFORE_ACTION; /* set up zconftext again */ |
@@ -1289,15 +1345,15 @@ YY_RULE_SETUP | |||
1289 | return T_HELPTEXT; | 1345 | return T_HELPTEXT; |
1290 | } | 1346 | } |
1291 | YY_BREAK | 1347 | YY_BREAK |
1292 | case 31: | 1348 | case 36: |
1293 | /* rule 31 can match eol */ | 1349 | /* rule 36 can match eol */ |
1294 | YY_RULE_SETUP | 1350 | YY_RULE_SETUP |
1295 | { | 1351 | { |
1296 | current_file->lineno++; | 1352 | current_file->lineno++; |
1297 | append_string("\n", 1); | 1353 | append_string("\n", 1); |
1298 | } | 1354 | } |
1299 | YY_BREAK | 1355 | YY_BREAK |
1300 | case 32: | 1356 | case 37: |
1301 | YY_RULE_SETUP | 1357 | YY_RULE_SETUP |
1302 | { | 1358 | { |
1303 | while (zconfleng) { | 1359 | while (zconfleng) { |
@@ -1328,7 +1384,7 @@ case YY_STATE_EOF(COMMAND): | |||
1328 | yyterminate(); | 1384 | yyterminate(); |
1329 | } | 1385 | } |
1330 | YY_BREAK | 1386 | YY_BREAK |
1331 | case 33: | 1387 | case 38: |
1332 | YY_RULE_SETUP | 1388 | YY_RULE_SETUP |
1333 | YY_FATAL_ERROR( "flex scanner jammed" ); | 1389 | YY_FATAL_ERROR( "flex scanner jammed" ); |
1334 | YY_BREAK | 1390 | YY_BREAK |
diff --git a/scripts/kconfig/zconf.tab.c_shipped b/scripts/kconfig/zconf.tab.c_shipped index de5e84ed3f96..7a4d658c2066 100644 --- a/scripts/kconfig/zconf.tab.c_shipped +++ b/scripts/kconfig/zconf.tab.c_shipped | |||
@@ -1,8 +1,8 @@ | |||
1 | /* A Bison parser, made by GNU Bison 2.5. */ | 1 | /* A Bison parser, made by GNU Bison 2.5.1. */ |
2 | 2 | ||
3 | /* Bison implementation for Yacc-like parsers in C | 3 | /* Bison implementation for Yacc-like parsers in C |
4 | 4 | ||
5 | Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. | 5 | Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. |
6 | 6 | ||
7 | This program is free software: you can redistribute it and/or modify | 7 | This program is free software: you can redistribute it and/or modify |
8 | it under the terms of the GNU General Public License as published by | 8 | it under the terms of the GNU General Public License as published by |
@@ -44,7 +44,7 @@ | |||
44 | #define YYBISON 1 | 44 | #define YYBISON 1 |
45 | 45 | ||
46 | /* Bison version. */ | 46 | /* Bison version. */ |
47 | #define YYBISON_VERSION "2.5" | 47 | #define YYBISON_VERSION "2.5.1" |
48 | 48 | ||
49 | /* Skeleton name. */ | 49 | /* Skeleton name. */ |
50 | #define YYSKELETON_NAME "yacc.c" | 50 | #define YYSKELETON_NAME "yacc.c" |
@@ -108,6 +108,14 @@ static struct menu *current_menu, *current_entry; | |||
108 | 108 | ||
109 | 109 | ||
110 | 110 | ||
111 | # ifndef YY_NULL | ||
112 | # if defined __cplusplus && 201103L <= __cplusplus | ||
113 | # define YY_NULL nullptr | ||
114 | # else | ||
115 | # define YY_NULL 0 | ||
116 | # endif | ||
117 | # endif | ||
118 | |||
111 | /* Enabling traces. */ | 119 | /* Enabling traces. */ |
112 | #ifndef YYDEBUG | 120 | #ifndef YYDEBUG |
113 | # define YYDEBUG 1 | 121 | # define YYDEBUG 1 |
@@ -159,13 +167,17 @@ static struct menu *current_menu, *current_entry; | |||
159 | T_WORD = 281, | 167 | T_WORD = 281, |
160 | T_WORD_QUOTE = 282, | 168 | T_WORD_QUOTE = 282, |
161 | T_UNEQUAL = 283, | 169 | T_UNEQUAL = 283, |
162 | T_CLOSE_PAREN = 284, | 170 | T_LESS = 284, |
163 | T_OPEN_PAREN = 285, | 171 | T_LESS_EQUAL = 285, |
164 | T_EOL = 286, | 172 | T_GREATER = 286, |
165 | T_OR = 287, | 173 | T_GREATER_EQUAL = 287, |
166 | T_AND = 288, | 174 | T_CLOSE_PAREN = 288, |
167 | T_EQUAL = 289, | 175 | T_OPEN_PAREN = 289, |
168 | T_NOT = 290 | 176 | T_EOL = 290, |
177 | T_OR = 291, | ||
178 | T_AND = 292, | ||
179 | T_EQUAL = 293, | ||
180 | T_NOT = 294 | ||
169 | }; | 181 | }; |
170 | #endif | 182 | #endif |
171 | 183 | ||
@@ -304,6 +316,7 @@ YYID (yyi) | |||
304 | # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ | 316 | # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ |
305 | || defined __cplusplus || defined _MSC_VER) | 317 | || defined __cplusplus || defined _MSC_VER) |
306 | # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ | 318 | # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ |
319 | /* Use EXIT_SUCCESS as a witness for stdlib.h. */ | ||
307 | # ifndef EXIT_SUCCESS | 320 | # ifndef EXIT_SUCCESS |
308 | # define EXIT_SUCCESS 0 | 321 | # define EXIT_SUCCESS 0 |
309 | # endif | 322 | # endif |
@@ -395,20 +408,20 @@ union yyalloc | |||
395 | #endif | 408 | #endif |
396 | 409 | ||
397 | #if defined YYCOPY_NEEDED && YYCOPY_NEEDED | 410 | #if defined YYCOPY_NEEDED && YYCOPY_NEEDED |
398 | /* Copy COUNT objects from FROM to TO. The source and destination do | 411 | /* Copy COUNT objects from SRC to DST. The source and destination do |
399 | not overlap. */ | 412 | not overlap. */ |
400 | # ifndef YYCOPY | 413 | # ifndef YYCOPY |
401 | # if defined __GNUC__ && 1 < __GNUC__ | 414 | # if defined __GNUC__ && 1 < __GNUC__ |
402 | # define YYCOPY(To, From, Count) \ | 415 | # define YYCOPY(Dst, Src, Count) \ |
403 | __builtin_memcpy (To, From, (Count) * sizeof (*(From))) | 416 | __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) |
404 | # else | 417 | # else |
405 | # define YYCOPY(To, From, Count) \ | 418 | # define YYCOPY(Dst, Src, Count) \ |
406 | do \ | 419 | do \ |
407 | { \ | 420 | { \ |
408 | YYSIZE_T yyi; \ | 421 | YYSIZE_T yyi; \ |
409 | for (yyi = 0; yyi < (Count); yyi++) \ | 422 | for (yyi = 0; yyi < (Count); yyi++) \ |
410 | (To)[yyi] = (From)[yyi]; \ | 423 | (Dst)[yyi] = (Src)[yyi]; \ |
411 | } \ | 424 | } \ |
412 | while (YYID (0)) | 425 | while (YYID (0)) |
413 | # endif | 426 | # endif |
414 | # endif | 427 | # endif |
@@ -417,20 +430,20 @@ union yyalloc | |||
417 | /* YYFINAL -- State number of the termination state. */ | 430 | /* YYFINAL -- State number of the termination state. */ |
418 | #define YYFINAL 11 | 431 | #define YYFINAL 11 |
419 | /* YYLAST -- Last index in YYTABLE. */ | 432 | /* YYLAST -- Last index in YYTABLE. */ |
420 | #define YYLAST 290 | 433 | #define YYLAST 298 |
421 | 434 | ||
422 | /* YYNTOKENS -- Number of terminals. */ | 435 | /* YYNTOKENS -- Number of terminals. */ |
423 | #define YYNTOKENS 36 | 436 | #define YYNTOKENS 40 |
424 | /* YYNNTS -- Number of nonterminals. */ | 437 | /* YYNNTS -- Number of nonterminals. */ |
425 | #define YYNNTS 50 | 438 | #define YYNNTS 50 |
426 | /* YYNRULES -- Number of rules. */ | 439 | /* YYNRULES -- Number of rules. */ |
427 | #define YYNRULES 118 | 440 | #define YYNRULES 122 |
428 | /* YYNRULES -- Number of states. */ | 441 | /* YYNRULES -- Number of states. */ |
429 | #define YYNSTATES 191 | 442 | #define YYNSTATES 199 |
430 | 443 | ||
431 | /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ | 444 | /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ |
432 | #define YYUNDEFTOK 2 | 445 | #define YYUNDEFTOK 2 |
433 | #define YYMAXUTOK 290 | 446 | #define YYMAXUTOK 294 |
434 | 447 | ||
435 | #define YYTRANSLATE(YYX) \ | 448 | #define YYTRANSLATE(YYX) \ |
436 | ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) | 449 | ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) |
@@ -467,7 +480,7 @@ static const yytype_uint8 yytranslate[] = | |||
467 | 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, | 480 | 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, |
468 | 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, | 481 | 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, |
469 | 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, | 482 | 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, |
470 | 35 | 483 | 35, 36, 37, 38, 39 |
471 | }; | 484 | }; |
472 | 485 | ||
473 | #if YYDEBUG | 486 | #if YYDEBUG |
@@ -486,64 +499,67 @@ static const yytype_uint16 yyprhs[] = | |||
486 | 235, 238, 241, 244, 248, 252, 255, 258, 261, 262, | 499 | 235, 238, 241, 244, 248, 252, 255, 258, 261, 262, |
487 | 265, 268, 271, 276, 277, 280, 283, 286, 287, 290, | 500 | 265, 268, 271, 276, 277, 280, 283, 286, 287, 290, |
488 | 292, 294, 297, 300, 303, 305, 308, 309, 312, 314, | 501 | 292, 294, 297, 300, 303, 305, 308, 309, 312, 314, |
489 | 318, 322, 326, 329, 333, 337, 339, 341, 342 | 502 | 318, 322, 326, 330, 334, 338, 342, 345, 349, 353, |
503 | 355, 357, 358 | ||
490 | }; | 504 | }; |
491 | 505 | ||
492 | /* YYRHS -- A `-1'-separated list of the rules' RHS. */ | 506 | /* YYRHS -- A `-1'-separated list of the rules' RHS. */ |
493 | static const yytype_int8 yyrhs[] = | 507 | static const yytype_int8 yyrhs[] = |
494 | { | 508 | { |
495 | 37, 0, -1, 81, 38, -1, 38, -1, 63, 39, | 509 | 41, 0, -1, 85, 42, -1, 42, -1, 67, 43, |
496 | -1, 39, -1, -1, 39, 41, -1, 39, 55, -1, | 510 | -1, 43, -1, -1, 43, 45, -1, 43, 59, -1, |
497 | 39, 67, -1, 39, 80, -1, 39, 26, 1, 31, | 511 | 43, 71, -1, 43, 84, -1, 43, 26, 1, 35, |
498 | -1, 39, 40, 1, 31, -1, 39, 1, 31, -1, | 512 | -1, 43, 44, 1, 35, -1, 43, 1, 35, -1, |
499 | 16, -1, 18, -1, 19, -1, 21, -1, 17, -1, | 513 | 16, -1, 18, -1, 19, -1, 21, -1, 17, -1, |
500 | 22, -1, 20, -1, 23, -1, 31, -1, 61, -1, | 514 | 22, -1, 20, -1, 23, -1, 35, -1, 65, -1, |
501 | 71, -1, 44, -1, 46, -1, 69, -1, 26, 1, | 515 | 75, -1, 48, -1, 50, -1, 73, -1, 26, 1, |
502 | 31, -1, 1, 31, -1, 10, 26, 31, -1, 43, | 516 | 35, -1, 1, 35, -1, 10, 26, 35, -1, 47, |
503 | 47, -1, 11, 26, 31, -1, 45, 47, -1, -1, | 517 | 51, -1, 11, 26, 35, -1, 49, 51, -1, -1, |
504 | 47, 48, -1, 47, 49, -1, 47, 75, -1, 47, | 518 | 51, 52, -1, 51, 53, -1, 51, 79, -1, 51, |
505 | 73, -1, 47, 42, -1, 47, 31, -1, 19, 78, | 519 | 77, -1, 51, 46, -1, 51, 35, -1, 19, 82, |
506 | 31, -1, 18, 79, 82, 31, -1, 20, 83, 82, | 520 | 35, -1, 18, 83, 86, 35, -1, 20, 87, 86, |
507 | 31, -1, 21, 26, 82, 31, -1, 22, 84, 84, | 521 | 35, -1, 21, 26, 86, 35, -1, 22, 88, 88, |
508 | 82, 31, -1, 24, 50, 31, -1, -1, 50, 26, | 522 | 86, 35, -1, 24, 54, 35, -1, -1, 54, 26, |
509 | 51, -1, -1, 34, 79, -1, 7, 85, 31, -1, | 523 | 55, -1, -1, 38, 83, -1, 7, 89, 35, -1, |
510 | 52, 56, -1, 80, -1, 53, 58, 54, -1, -1, | 524 | 56, 60, -1, 84, -1, 57, 62, 58, -1, -1, |
511 | 56, 57, -1, 56, 75, -1, 56, 73, -1, 56, | 525 | 60, 61, -1, 60, 79, -1, 60, 77, -1, 60, |
512 | 31, -1, 56, 42, -1, 18, 79, 82, 31, -1, | 526 | 35, -1, 60, 46, -1, 18, 83, 86, 35, -1, |
513 | 19, 78, 31, -1, 17, 31, -1, 20, 26, 82, | 527 | 19, 82, 35, -1, 17, 35, -1, 20, 26, 86, |
514 | 31, -1, -1, 58, 41, -1, 14, 83, 81, -1, | 528 | 35, -1, -1, 62, 45, -1, 14, 87, 85, -1, |
515 | 80, -1, 59, 62, 60, -1, -1, 62, 41, -1, | 529 | 84, -1, 63, 66, 64, -1, -1, 66, 45, -1, |
516 | 62, 67, -1, 62, 55, -1, 3, 79, 81, -1, | 530 | 66, 71, -1, 66, 59, -1, 3, 83, 85, -1, |
517 | 4, 79, 31, -1, 64, 76, 74, -1, 80, -1, | 531 | 4, 83, 35, -1, 68, 80, 78, -1, 84, -1, |
518 | 65, 68, 66, -1, -1, 68, 41, -1, 68, 67, | 532 | 69, 72, 70, -1, -1, 72, 45, -1, 72, 71, |
519 | -1, 68, 55, -1, 6, 79, 31, -1, 9, 79, | 533 | -1, 72, 59, -1, 6, 83, 35, -1, 9, 83, |
520 | 31, -1, 70, 74, -1, 12, 31, -1, 72, 13, | 534 | 35, -1, 74, 78, -1, 12, 35, -1, 76, 13, |
521 | -1, -1, 74, 75, -1, 74, 31, -1, 74, 42, | 535 | -1, -1, 78, 79, -1, 78, 35, -1, 78, 46, |
522 | -1, 16, 25, 83, 31, -1, -1, 76, 77, -1, | 536 | -1, 16, 25, 87, 35, -1, -1, 80, 81, -1, |
523 | 76, 31, -1, 23, 82, -1, -1, 79, 82, -1, | 537 | 80, 35, -1, 23, 86, -1, -1, 83, 86, -1, |
524 | 26, -1, 27, -1, 5, 31, -1, 8, 31, -1, | 538 | 26, -1, 27, -1, 5, 35, -1, 8, 35, -1, |
525 | 15, 31, -1, 31, -1, 81, 31, -1, -1, 14, | 539 | 15, 35, -1, 35, -1, 85, 35, -1, -1, 14, |
526 | 83, -1, 84, -1, 84, 34, 84, -1, 84, 28, | 540 | 87, -1, 88, -1, 88, 29, 88, -1, 88, 30, |
527 | 84, -1, 30, 83, 29, -1, 35, 83, -1, 83, | 541 | 88, -1, 88, 31, 88, -1, 88, 32, 88, -1, |
528 | 32, 83, -1, 83, 33, 83, -1, 26, -1, 27, | 542 | 88, 38, 88, -1, 88, 28, 88, -1, 34, 87, |
529 | -1, -1, 26, -1 | 543 | 33, -1, 39, 87, -1, 87, 36, 87, -1, 87, |
544 | 37, 87, -1, 26, -1, 27, -1, -1, 26, -1 | ||
530 | }; | 545 | }; |
531 | 546 | ||
532 | /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ | 547 | /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ |
533 | static const yytype_uint16 yyrline[] = | 548 | static const yytype_uint16 yyrline[] = |
534 | { | 549 | { |
535 | 0, 103, 103, 103, 105, 105, 107, 109, 110, 111, | 550 | 0, 108, 108, 108, 110, 110, 112, 114, 115, 116, |
536 | 112, 113, 114, 118, 122, 122, 122, 122, 122, 122, | 551 | 117, 118, 119, 123, 127, 127, 127, 127, 127, 127, |
537 | 122, 122, 126, 127, 128, 129, 130, 131, 135, 136, | 552 | 127, 127, 131, 132, 133, 134, 135, 136, 140, 141, |
538 | 142, 150, 156, 164, 174, 176, 177, 178, 179, 180, | 553 | 147, 155, 161, 169, 179, 181, 182, 183, 184, 185, |
539 | 181, 184, 192, 198, 208, 214, 220, 223, 225, 236, | 554 | 186, 189, 197, 203, 213, 219, 225, 228, 230, 241, |
540 | 237, 242, 251, 256, 264, 267, 269, 270, 271, 272, | 555 | 242, 247, 256, 261, 269, 272, 274, 275, 276, 277, |
541 | 273, 276, 282, 293, 299, 309, 311, 316, 324, 332, | 556 | 278, 281, 287, 298, 304, 314, 316, 321, 329, 337, |
542 | 335, 337, 338, 339, 344, 351, 358, 363, 371, 374, | 557 | 340, 342, 343, 344, 349, 356, 363, 368, 376, 379, |
543 | 376, 377, 378, 381, 389, 396, 403, 409, 416, 418, | 558 | 381, 382, 383, 386, 394, 401, 408, 414, 421, 423, |
544 | 419, 420, 423, 431, 433, 434, 437, 444, 446, 451, | 559 | 424, 425, 428, 436, 438, 439, 442, 449, 451, 456, |
545 | 452, 455, 456, 457, 461, 462, 465, 466, 469, 470, | 560 | 457, 460, 461, 462, 466, 467, 470, 471, 474, 475, |
546 | 471, 472, 473, 474, 475, 478, 479, 482, 483 | 561 | 476, 477, 478, 479, 480, 481, 482, 483, 484, 487, |
562 | 488, 491, 492 | ||
547 | }; | 563 | }; |
548 | #endif | 564 | #endif |
549 | 565 | ||
@@ -557,6 +573,7 @@ static const char *const yytname[] = | |||
557 | "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS", | 573 | "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS", |
558 | "T_OPTIONAL", "T_PROMPT", "T_TYPE", "T_DEFAULT", "T_SELECT", "T_RANGE", | 574 | "T_OPTIONAL", "T_PROMPT", "T_TYPE", "T_DEFAULT", "T_SELECT", "T_RANGE", |
559 | "T_VISIBLE", "T_OPTION", "T_ON", "T_WORD", "T_WORD_QUOTE", "T_UNEQUAL", | 575 | "T_VISIBLE", "T_OPTION", "T_ON", "T_WORD", "T_WORD_QUOTE", "T_UNEQUAL", |
576 | "T_LESS", "T_LESS_EQUAL", "T_GREATER", "T_GREATER_EQUAL", | ||
560 | "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_EOL", "T_OR", "T_AND", "T_EQUAL", | 577 | "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_EOL", "T_OR", "T_AND", "T_EQUAL", |
561 | "T_NOT", "$accept", "input", "start", "stmt_list", "option_name", | 578 | "T_NOT", "$accept", "input", "start", "stmt_list", "option_name", |
562 | "common_stmt", "option_error", "config_entry_start", "config_stmt", | 579 | "common_stmt", "option_error", "config_entry_start", "config_stmt", |
@@ -568,7 +585,7 @@ static const char *const yytname[] = | |||
568 | "menu_entry", "menu_end", "menu_stmt", "menu_block", "source_stmt", | 585 | "menu_entry", "menu_end", "menu_stmt", "menu_block", "source_stmt", |
569 | "comment", "comment_stmt", "help_start", "help", "depends_list", | 586 | "comment", "comment_stmt", "help_start", "help", "depends_list", |
570 | "depends", "visibility_list", "visible", "prompt_stmt_opt", "prompt", | 587 | "depends", "visibility_list", "visible", "prompt_stmt_opt", "prompt", |
571 | "end", "nl", "if_expr", "expr", "symbol", "word_opt", 0 | 588 | "end", "nl", "if_expr", "expr", "symbol", "word_opt", YY_NULL |
572 | }; | 589 | }; |
573 | #endif | 590 | #endif |
574 | 591 | ||
@@ -580,25 +597,26 @@ static const yytype_uint16 yytoknum[] = | |||
580 | 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, | 597 | 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, |
581 | 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, | 598 | 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, |
582 | 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, | 599 | 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, |
583 | 285, 286, 287, 288, 289, 290 | 600 | 285, 286, 287, 288, 289, 290, 291, 292, 293, 294 |
584 | }; | 601 | }; |
585 | # endif | 602 | # endif |
586 | 603 | ||
587 | /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ | 604 | /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ |
588 | static const yytype_uint8 yyr1[] = | 605 | static const yytype_uint8 yyr1[] = |
589 | { | 606 | { |
590 | 0, 36, 37, 37, 38, 38, 39, 39, 39, 39, | 607 | 0, 40, 41, 41, 42, 42, 43, 43, 43, 43, |
591 | 39, 39, 39, 39, 40, 40, 40, 40, 40, 40, | 608 | 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, |
592 | 40, 40, 41, 41, 41, 41, 41, 41, 42, 42, | 609 | 44, 44, 45, 45, 45, 45, 45, 45, 46, 46, |
593 | 43, 44, 45, 46, 47, 47, 47, 47, 47, 47, | 610 | 47, 48, 49, 50, 51, 51, 51, 51, 51, 51, |
594 | 47, 48, 48, 48, 48, 48, 49, 50, 50, 51, | 611 | 51, 52, 52, 52, 52, 52, 53, 54, 54, 55, |
595 | 51, 52, 53, 54, 55, 56, 56, 56, 56, 56, | 612 | 55, 56, 57, 58, 59, 60, 60, 60, 60, 60, |
596 | 56, 57, 57, 57, 57, 58, 58, 59, 60, 61, | 613 | 60, 61, 61, 61, 61, 62, 62, 63, 64, 65, |
597 | 62, 62, 62, 62, 63, 64, 65, 66, 67, 68, | 614 | 66, 66, 66, 66, 67, 68, 69, 70, 71, 72, |
598 | 68, 68, 68, 69, 70, 71, 72, 73, 74, 74, | 615 | 72, 72, 72, 73, 74, 75, 76, 77, 78, 78, |
599 | 74, 74, 75, 76, 76, 76, 77, 78, 78, 79, | 616 | 78, 78, 79, 80, 80, 80, 81, 82, 82, 83, |
600 | 79, 80, 80, 80, 81, 81, 82, 82, 83, 83, | 617 | 83, 84, 84, 84, 85, 85, 86, 86, 87, 87, |
601 | 83, 83, 83, 83, 83, 84, 84, 85, 85 | 618 | 87, 87, 87, 87, 87, 87, 87, 87, 87, 88, |
619 | 88, 89, 89 | ||
602 | }; | 620 | }; |
603 | 621 | ||
604 | /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ | 622 | /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ |
@@ -615,7 +633,8 @@ static const yytype_uint8 yyr2[] = | |||
615 | 2, 2, 2, 3, 3, 2, 2, 2, 0, 2, | 633 | 2, 2, 2, 3, 3, 2, 2, 2, 0, 2, |
616 | 2, 2, 4, 0, 2, 2, 2, 0, 2, 1, | 634 | 2, 2, 4, 0, 2, 2, 2, 0, 2, 1, |
617 | 1, 2, 2, 2, 1, 2, 0, 2, 1, 3, | 635 | 1, 2, 2, 2, 1, 2, 0, 2, 1, 3, |
618 | 3, 3, 2, 3, 3, 1, 1, 0, 1 | 636 | 3, 3, 3, 3, 3, 3, 2, 3, 3, 1, |
637 | 1, 0, 1 | ||
619 | }; | 638 | }; |
620 | 639 | ||
621 | /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. | 640 | /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. |
@@ -624,72 +643,72 @@ static const yytype_uint8 yyr2[] = | |||
624 | static const yytype_uint8 yydefact[] = | 643 | static const yytype_uint8 yydefact[] = |
625 | { | 644 | { |
626 | 6, 0, 104, 0, 3, 0, 6, 6, 99, 100, | 645 | 6, 0, 104, 0, 3, 0, 6, 6, 99, 100, |
627 | 0, 1, 0, 0, 0, 0, 117, 0, 0, 0, | 646 | 0, 1, 0, 0, 0, 0, 121, 0, 0, 0, |
628 | 0, 0, 0, 14, 18, 15, 16, 20, 17, 19, | 647 | 0, 0, 0, 14, 18, 15, 16, 20, 17, 19, |
629 | 21, 0, 22, 0, 7, 34, 25, 34, 26, 55, | 648 | 21, 0, 22, 0, 7, 34, 25, 34, 26, 55, |
630 | 65, 8, 70, 23, 93, 79, 9, 27, 88, 24, | 649 | 65, 8, 70, 23, 93, 79, 9, 27, 88, 24, |
631 | 10, 0, 105, 2, 74, 13, 0, 101, 0, 118, | 650 | 10, 0, 105, 2, 74, 13, 0, 101, 0, 122, |
632 | 0, 102, 0, 0, 0, 115, 116, 0, 0, 0, | 651 | 0, 102, 0, 0, 0, 119, 120, 0, 0, 0, |
633 | 108, 103, 0, 0, 0, 0, 0, 0, 0, 88, | 652 | 108, 103, 0, 0, 0, 0, 0, 0, 0, 88, |
634 | 0, 0, 75, 83, 51, 84, 30, 32, 0, 112, | 653 | 0, 0, 75, 83, 51, 84, 30, 32, 0, 116, |
635 | 0, 0, 67, 0, 0, 11, 12, 0, 0, 0, | 654 | 0, 0, 67, 0, 0, 0, 0, 0, 0, 11, |
636 | 0, 97, 0, 0, 0, 47, 0, 40, 39, 35, | 655 | 12, 0, 0, 0, 0, 97, 0, 0, 0, 47, |
637 | 36, 0, 38, 37, 0, 0, 97, 0, 59, 60, | 656 | 0, 40, 39, 35, 36, 0, 38, 37, 0, 0, |
638 | 56, 58, 57, 66, 54, 53, 71, 73, 69, 72, | 657 | 97, 0, 59, 60, 56, 58, 57, 66, 54, 53, |
639 | 68, 106, 95, 0, 94, 80, 82, 78, 81, 77, | 658 | 71, 73, 69, 72, 68, 106, 95, 0, 94, 80, |
640 | 90, 91, 89, 111, 113, 114, 110, 109, 29, 86, | 659 | 82, 78, 81, 77, 90, 91, 89, 115, 117, 118, |
641 | 0, 106, 0, 106, 106, 106, 0, 0, 0, 87, | 660 | 114, 109, 110, 111, 112, 113, 29, 86, 0, 106, |
642 | 63, 106, 0, 106, 0, 96, 0, 0, 41, 98, | 661 | 0, 106, 106, 106, 0, 0, 0, 87, 63, 106, |
643 | 0, 0, 106, 49, 46, 28, 0, 62, 0, 107, | 662 | 0, 106, 0, 96, 0, 0, 41, 98, 0, 0, |
644 | 92, 42, 43, 44, 0, 0, 48, 61, 64, 45, | 663 | 106, 49, 46, 28, 0, 62, 0, 107, 92, 42, |
645 | 50 | 664 | 43, 44, 0, 0, 48, 61, 64, 45, 50 |
646 | }; | 665 | }; |
647 | 666 | ||
648 | /* YYDEFGOTO[NTERM-NUM]. */ | 667 | /* YYDEFGOTO[NTERM-NUM]. */ |
649 | static const yytype_int16 yydefgoto[] = | 668 | static const yytype_int16 yydefgoto[] = |
650 | { | 669 | { |
651 | -1, 3, 4, 5, 33, 34, 108, 35, 36, 37, | 670 | -1, 3, 4, 5, 33, 34, 112, 35, 36, 37, |
652 | 38, 74, 109, 110, 157, 186, 39, 40, 124, 41, | 671 | 38, 74, 113, 114, 165, 194, 39, 40, 128, 41, |
653 | 76, 120, 77, 42, 128, 43, 78, 6, 44, 45, | 672 | 76, 124, 77, 42, 132, 43, 78, 6, 44, 45, |
654 | 137, 46, 80, 47, 48, 49, 111, 112, 81, 113, | 673 | 141, 46, 80, 47, 48, 49, 115, 116, 81, 117, |
655 | 79, 134, 152, 153, 50, 7, 165, 69, 70, 60 | 674 | 79, 138, 160, 161, 50, 7, 173, 69, 70, 60 |
656 | }; | 675 | }; |
657 | 676 | ||
658 | /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing | 677 | /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing |
659 | STATE-NUM. */ | 678 | STATE-NUM. */ |
660 | #define YYPACT_NINF -90 | 679 | #define YYPACT_NINF -91 |
661 | static const yytype_int16 yypact[] = | 680 | static const yytype_int16 yypact[] = |
662 | { | 681 | { |
663 | 4, 42, -90, 96, -90, 111, -90, 15, -90, -90, | 682 | 19, 37, -91, 13, -91, 79, -91, 20, -91, -91, |
664 | 75, -90, 82, 42, 104, 42, 110, 107, 42, 115, | 683 | -16, -91, 21, 37, 25, 37, 41, 36, 37, 78, |
665 | 125, -4, 121, -90, -90, -90, -90, -90, -90, -90, | 684 | 83, 31, 56, -91, -91, -91, -91, -91, -91, -91, |
666 | -90, 162, -90, 163, -90, -90, -90, -90, -90, -90, | 685 | -91, 116, -91, 127, -91, -91, -91, -91, -91, -91, |
667 | -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, | 686 | -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, |
668 | -90, 139, -90, -90, 138, -90, 142, -90, 143, -90, | 687 | -91, 147, -91, -91, 105, -91, 109, -91, 111, -91, |
669 | 152, -90, 164, 167, 168, -90, -90, -4, -4, 77, | 688 | 114, -91, 136, 137, 142, -91, -91, 31, 31, 76, |
670 | -18, -90, 177, 185, 33, 71, 195, 247, 236, -2, | 689 | 254, -91, 143, 146, 27, 115, 207, 258, 243, -14, |
671 | 236, 171, -90, -90, -90, -90, -90, -90, 41, -90, | 690 | 243, 179, -91, -91, -91, -91, -91, -91, -7, -91, |
672 | -4, -4, 138, 97, 97, -90, -90, 186, 187, 194, | 691 | 31, 31, 105, 51, 51, 51, 51, 51, 51, -91, |
673 | 42, 42, -4, 196, 97, -90, 219, -90, -90, -90, | 692 | -91, 156, 168, 181, 37, 37, 31, 178, 51, -91, |
674 | -90, 210, -90, -90, 204, 42, 42, 199, -90, -90, | 693 | 206, -91, -91, -91, -91, 196, -91, -91, 175, 37, |
675 | -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, | 694 | 37, 185, -91, -91, -91, -91, -91, -91, -91, -91, |
676 | -90, 222, -90, 223, -90, -90, -90, -90, -90, -90, | 695 | -91, -91, -91, -91, -91, 214, -91, 230, -91, -91, |
677 | -90, -90, -90, -90, 215, -90, -90, -90, -90, -90, | 696 | -91, -91, -91, -91, -91, -91, -91, -91, 183, -91, |
678 | -4, 222, 228, 222, -5, 222, 97, 35, 229, -90, | 697 | -91, -91, -91, -91, -91, -91, -91, -91, 31, 214, |
679 | -90, 222, 232, 222, -4, -90, 135, 233, -90, -90, | 698 | 194, 214, 45, 214, 51, 26, 195, -91, -91, 214, |
680 | 234, 235, 222, 240, -90, -90, 237, -90, 239, -13, | 699 | 197, 214, 31, -91, 139, 208, -91, -91, 220, 224, |
681 | -90, -90, -90, -90, 244, 42, -90, -90, -90, -90, | 700 | 214, 222, -91, -91, 226, -91, 227, 123, -91, -91, |
682 | -90 | 701 | -91, -91, 235, 37, -91, -91, -91, -91, -91 |
683 | }; | 702 | }; |
684 | 703 | ||
685 | /* YYPGOTO[NTERM-NUM]. */ | 704 | /* YYPGOTO[NTERM-NUM]. */ |
686 | static const yytype_int16 yypgoto[] = | 705 | static const yytype_int16 yypgoto[] = |
687 | { | 706 | { |
688 | -90, -90, 269, 271, -90, 23, -70, -90, -90, -90, | 707 | -91, -91, 264, 268, -91, 30, -65, -91, -91, -91, |
689 | -90, 243, -90, -90, -90, -90, -90, -90, -90, -48, | 708 | -91, 238, -91, -91, -91, -91, -91, -91, -91, -12, |
690 | -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, | 709 | -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, |
691 | -90, -20, -90, -90, -90, -90, -90, 206, 205, -68, | 710 | -91, -5, -91, -91, -91, -91, -91, 200, 209, -61, |
692 | -90, -90, 169, -1, 27, -7, 118, -66, -89, -90 | 711 | -91, -91, 170, -1, 65, 0, 118, -66, -90, -91 |
693 | }; | 712 | }; |
694 | 713 | ||
695 | /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If | 714 | /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If |
@@ -698,102 +717,102 @@ static const yytype_int16 yypgoto[] = | |||
698 | #define YYTABLE_NINF -86 | 717 | #define YYTABLE_NINF -86 |
699 | static const yytype_int16 yytable[] = | 718 | static const yytype_int16 yytable[] = |
700 | { | 719 | { |
701 | 10, 88, 89, 54, 146, 147, 119, 1, 122, 164, | 720 | 10, 88, 89, 150, 151, 152, 153, 154, 155, 135, |
702 | 93, 141, 56, 142, 58, 156, 94, 62, 1, 90, | 721 | 54, 123, 56, 11, 58, 126, 145, 62, 164, 2, |
703 | 91, 131, 65, 66, 144, 145, 67, 90, 91, 132, | 722 | 146, 136, 1, 1, 148, 149, 147, -31, 101, 90, |
704 | 127, 68, 136, -31, 97, 2, 154, -31, -31, -31, | 723 | 91, -31, -31, -31, -31, -31, -31, -31, -31, 102, |
705 | -31, -31, -31, -31, -31, 98, 52, -31, -31, 99, | 724 | 162, -31, -31, 103, -31, 104, 105, 106, 107, 108, |
706 | -31, 100, 101, 102, 103, 104, -31, 105, 129, 106, | 725 | -31, 109, 181, 110, 2, 52, 55, 65, 66, 172, |
707 | 138, 173, 92, 141, 107, 142, 174, 172, 8, 9, | 726 | 57, 182, 111, 8, 9, 67, 131, 59, 140, 92, |
708 | 143, -33, 97, 90, 91, -33, -33, -33, -33, -33, | 727 | 68, 61, 145, 133, 180, 142, 146, 65, 66, -5, |
709 | -33, -33, -33, 98, 166, -33, -33, 99, -33, 100, | 728 | 12, 90, 91, 13, 14, 15, 16, 17, 18, 19, |
710 | 101, 102, 103, 104, -33, 105, 11, 106, 179, 151, | 729 | 20, 71, 174, 21, 22, 23, 24, 25, 26, 27, |
711 | 123, 126, 107, 135, 125, 130, 2, 139, 2, 90, | 730 | 28, 29, 30, 159, 63, 31, 187, 127, 130, 64, |
712 | 91, -5, 12, 55, 161, 13, 14, 15, 16, 17, | 731 | 139, 2, 90, 91, 32, -33, 101, 72, 169, -33, |
713 | 18, 19, 20, 65, 66, 21, 22, 23, 24, 25, | 732 | -33, -33, -33, -33, -33, -33, -33, 102, 73, -33, |
714 | 26, 27, 28, 29, 30, 57, 59, 31, 61, -4, | 733 | -33, 103, -33, 104, 105, 106, 107, 108, -33, 109, |
715 | 12, 63, 32, 13, 14, 15, 16, 17, 18, 19, | 734 | 52, 110, 129, 134, 82, 143, 83, -4, 12, 84, |
716 | 20, 64, 71, 21, 22, 23, 24, 25, 26, 27, | 735 | 111, 13, 14, 15, 16, 17, 18, 19, 20, 90, |
717 | 28, 29, 30, 72, 73, 31, 180, 90, 91, 52, | 736 | 91, 21, 22, 23, 24, 25, 26, 27, 28, 29, |
718 | 32, -85, 97, 82, 83, -85, -85, -85, -85, -85, | 737 | 30, 85, 86, 31, 188, 90, 91, 87, 99, -85, |
719 | -85, -85, -85, 84, 190, -85, -85, 99, -85, -85, | 738 | 101, 100, 32, -85, -85, -85, -85, -85, -85, -85, |
720 | -85, -85, -85, -85, -85, 85, 97, 106, 86, 87, | 739 | -85, 156, 198, -85, -85, 103, -85, -85, -85, -85, |
721 | -52, -52, 140, -52, -52, -52, -52, 98, 95, -52, | 740 | -85, -85, -85, 157, 163, 110, 158, 166, 101, 167, |
722 | -52, 99, 114, 115, 116, 117, 96, 148, 149, 150, | 741 | 168, 171, -52, -52, 144, -52, -52, -52, -52, 102, |
723 | 158, 106, 155, 159, 97, 163, 118, -76, -76, -76, | 742 | 91, -52, -52, 103, 118, 119, 120, 121, 172, 176, |
724 | -76, -76, -76, -76, -76, 160, 164, -76, -76, 99, | 743 | 183, 101, 185, 110, -76, -76, -76, -76, -76, -76, |
725 | 13, 14, 15, 16, 17, 18, 19, 20, 91, 106, | 744 | -76, -76, 122, 189, -76, -76, 103, 13, 14, 15, |
726 | 21, 22, 14, 15, 140, 17, 18, 19, 20, 168, | 745 | 16, 17, 18, 19, 20, 190, 110, 21, 22, 191, |
727 | 175, 21, 22, 177, 181, 182, 183, 32, 187, 167, | 746 | 193, 195, 196, 14, 15, 144, 17, 18, 19, 20, |
728 | 188, 169, 170, 171, 185, 189, 53, 51, 32, 176, | 747 | 197, 53, 21, 22, 51, 75, 125, 175, 32, 177, |
729 | 75, 178, 121, 0, 133, 162, 0, 0, 0, 0, | 748 | 178, 179, 93, 94, 95, 96, 97, 184, 137, 186, |
730 | 184 | 749 | 170, 0, 98, 32, 0, 0, 0, 0, 192 |
731 | }; | 750 | }; |
732 | 751 | ||
733 | #define yypact_value_is_default(yystate) \ | 752 | #define yypact_value_is_default(yystate) \ |
734 | ((yystate) == (-90)) | 753 | ((yystate) == (-91)) |
735 | 754 | ||
736 | #define yytable_value_is_error(yytable_value) \ | 755 | #define yytable_value_is_error(yytable_value) \ |
737 | YYID (0) | 756 | YYID (0) |
738 | 757 | ||
739 | static const yytype_int16 yycheck[] = | 758 | static const yytype_int16 yycheck[] = |
740 | { | 759 | { |
741 | 1, 67, 68, 10, 93, 94, 76, 3, 76, 14, | 760 | 1, 67, 68, 93, 94, 95, 96, 97, 98, 23, |
742 | 28, 81, 13, 81, 15, 104, 34, 18, 3, 32, | 761 | 10, 76, 13, 0, 15, 76, 81, 18, 108, 35, |
743 | 33, 23, 26, 27, 90, 91, 30, 32, 33, 31, | 762 | 81, 35, 3, 3, 90, 91, 33, 0, 1, 36, |
744 | 78, 35, 80, 0, 1, 31, 102, 4, 5, 6, | 763 | 37, 4, 5, 6, 7, 8, 9, 10, 11, 12, |
745 | 7, 8, 9, 10, 11, 12, 31, 14, 15, 16, | 764 | 106, 14, 15, 16, 17, 18, 19, 20, 21, 22, |
746 | 17, 18, 19, 20, 21, 22, 23, 24, 78, 26, | 765 | 23, 24, 26, 26, 35, 35, 35, 26, 27, 14, |
747 | 80, 26, 69, 133, 31, 133, 31, 156, 26, 27, | 766 | 35, 35, 35, 26, 27, 34, 78, 26, 80, 69, |
748 | 29, 0, 1, 32, 33, 4, 5, 6, 7, 8, | 767 | 39, 35, 137, 78, 164, 80, 137, 26, 27, 0, |
749 | 9, 10, 11, 12, 150, 14, 15, 16, 17, 18, | 768 | 1, 36, 37, 4, 5, 6, 7, 8, 9, 10, |
750 | 19, 20, 21, 22, 23, 24, 0, 26, 164, 100, | 769 | 11, 35, 158, 14, 15, 16, 17, 18, 19, 20, |
751 | 77, 78, 31, 80, 77, 78, 31, 80, 31, 32, | 770 | 21, 22, 23, 104, 26, 26, 172, 77, 78, 26, |
752 | 33, 0, 1, 31, 115, 4, 5, 6, 7, 8, | 771 | 80, 35, 36, 37, 35, 0, 1, 1, 119, 4, |
753 | 9, 10, 11, 26, 27, 14, 15, 16, 17, 18, | 772 | 5, 6, 7, 8, 9, 10, 11, 12, 1, 14, |
754 | 19, 20, 21, 22, 23, 31, 26, 26, 31, 0, | 773 | 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, |
755 | 1, 26, 31, 4, 5, 6, 7, 8, 9, 10, | 774 | 35, 26, 77, 78, 35, 80, 35, 0, 1, 35, |
756 | 11, 26, 31, 14, 15, 16, 17, 18, 19, 20, | 775 | 35, 4, 5, 6, 7, 8, 9, 10, 11, 36, |
757 | 21, 22, 23, 1, 1, 26, 31, 32, 33, 31, | 776 | 37, 14, 15, 16, 17, 18, 19, 20, 21, 22, |
758 | 31, 0, 1, 31, 31, 4, 5, 6, 7, 8, | 777 | 23, 35, 35, 26, 35, 36, 37, 35, 35, 0, |
759 | 9, 10, 11, 31, 185, 14, 15, 16, 17, 18, | 778 | 1, 35, 35, 4, 5, 6, 7, 8, 9, 10, |
760 | 19, 20, 21, 22, 23, 31, 1, 26, 31, 31, | 779 | 11, 35, 193, 14, 15, 16, 17, 18, 19, 20, |
761 | 5, 6, 31, 8, 9, 10, 11, 12, 31, 14, | 780 | 21, 22, 23, 35, 26, 26, 25, 1, 1, 13, |
762 | 15, 16, 17, 18, 19, 20, 31, 31, 31, 25, | 781 | 35, 26, 5, 6, 35, 8, 9, 10, 11, 12, |
763 | 1, 26, 26, 13, 1, 26, 31, 4, 5, 6, | 782 | 37, 14, 15, 16, 17, 18, 19, 20, 14, 35, |
764 | 7, 8, 9, 10, 11, 31, 14, 14, 15, 16, | 783 | 35, 1, 35, 26, 4, 5, 6, 7, 8, 9, |
765 | 4, 5, 6, 7, 8, 9, 10, 11, 33, 26, | 784 | 10, 11, 35, 35, 14, 15, 16, 4, 5, 6, |
766 | 14, 15, 5, 6, 31, 8, 9, 10, 11, 31, | 785 | 7, 8, 9, 10, 11, 35, 26, 14, 15, 35, |
767 | 31, 14, 15, 31, 31, 31, 31, 31, 31, 151, | 786 | 38, 35, 35, 5, 6, 35, 8, 9, 10, 11, |
768 | 31, 153, 154, 155, 34, 31, 7, 6, 31, 161, | 787 | 35, 7, 14, 15, 6, 37, 76, 159, 35, 161, |
769 | 37, 163, 76, -1, 79, 116, -1, -1, -1, -1, | 788 | 162, 163, 28, 29, 30, 31, 32, 169, 79, 171, |
770 | 172 | 789 | 120, -1, 38, 35, -1, -1, -1, -1, 180 |
771 | }; | 790 | }; |
772 | 791 | ||
773 | /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing | 792 | /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing |
774 | symbol of state STATE-NUM. */ | 793 | symbol of state STATE-NUM. */ |
775 | static const yytype_uint8 yystos[] = | 794 | static const yytype_uint8 yystos[] = |
776 | { | 795 | { |
777 | 0, 3, 31, 37, 38, 39, 63, 81, 26, 27, | 796 | 0, 3, 35, 41, 42, 43, 67, 85, 26, 27, |
778 | 79, 0, 1, 4, 5, 6, 7, 8, 9, 10, | 797 | 83, 0, 1, 4, 5, 6, 7, 8, 9, 10, |
779 | 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, | 798 | 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, |
780 | 23, 26, 31, 40, 41, 43, 44, 45, 46, 52, | 799 | 23, 26, 35, 44, 45, 47, 48, 49, 50, 56, |
781 | 53, 55, 59, 61, 64, 65, 67, 69, 70, 71, | 800 | 57, 59, 63, 65, 68, 69, 71, 73, 74, 75, |
782 | 80, 39, 31, 38, 81, 31, 79, 31, 79, 26, | 801 | 84, 43, 35, 42, 85, 35, 83, 35, 83, 26, |
783 | 85, 31, 79, 26, 26, 26, 27, 30, 35, 83, | 802 | 89, 35, 83, 26, 26, 26, 27, 34, 39, 87, |
784 | 84, 31, 1, 1, 47, 47, 56, 58, 62, 76, | 803 | 88, 35, 1, 1, 51, 51, 60, 62, 66, 80, |
785 | 68, 74, 31, 31, 31, 31, 31, 31, 83, 83, | 804 | 72, 78, 35, 35, 35, 35, 35, 35, 87, 87, |
786 | 32, 33, 81, 28, 34, 31, 31, 1, 12, 16, | 805 | 36, 37, 85, 28, 29, 30, 31, 32, 38, 35, |
787 | 18, 19, 20, 21, 22, 24, 26, 31, 42, 48, | 806 | 35, 1, 12, 16, 18, 19, 20, 21, 22, 24, |
788 | 49, 72, 73, 75, 17, 18, 19, 20, 31, 42, | 807 | 26, 35, 46, 52, 53, 76, 77, 79, 17, 18, |
789 | 57, 73, 75, 41, 54, 80, 41, 55, 60, 67, | 808 | 19, 20, 35, 46, 61, 77, 79, 45, 58, 84, |
790 | 80, 23, 31, 74, 77, 41, 55, 66, 67, 80, | 809 | 45, 59, 64, 71, 84, 23, 35, 78, 81, 45, |
791 | 31, 42, 75, 29, 83, 83, 84, 84, 31, 31, | 810 | 59, 70, 71, 84, 35, 46, 79, 33, 87, 87, |
792 | 25, 79, 78, 79, 83, 26, 84, 50, 1, 13, | 811 | 88, 88, 88, 88, 88, 88, 35, 35, 25, 83, |
793 | 31, 79, 78, 26, 14, 82, 83, 82, 31, 82, | 812 | 82, 83, 87, 26, 88, 54, 1, 13, 35, 83, |
794 | 82, 82, 84, 26, 31, 31, 82, 31, 82, 83, | 813 | 82, 26, 14, 86, 87, 86, 35, 86, 86, 86, |
795 | 31, 31, 31, 31, 82, 34, 51, 31, 31, 31, | 814 | 88, 26, 35, 35, 86, 35, 86, 87, 35, 35, |
796 | 79 | 815 | 35, 35, 86, 38, 55, 35, 35, 35, 83 |
797 | }; | 816 | }; |
798 | 817 | ||
799 | #define yyerrok (yyerrstatus = 0) | 818 | #define yyerrok (yyerrstatus = 0) |
@@ -823,17 +842,18 @@ static const yytype_uint8 yystos[] = | |||
823 | 842 | ||
824 | #define YYRECOVERING() (!!yyerrstatus) | 843 | #define YYRECOVERING() (!!yyerrstatus) |
825 | 844 | ||
826 | #define YYBACKUP(Token, Value) \ | 845 | #define YYBACKUP(Token, Value) \ |
827 | do \ | 846 | do \ |
828 | if (yychar == YYEMPTY && yylen == 1) \ | 847 | if (yychar == YYEMPTY) \ |
829 | { \ | 848 | { \ |
830 | yychar = (Token); \ | 849 | yychar = (Token); \ |
831 | yylval = (Value); \ | 850 | yylval = (Value); \ |
832 | YYPOPSTACK (1); \ | 851 | YYPOPSTACK (yylen); \ |
833 | goto yybackup; \ | 852 | yystate = *yyssp; \ |
834 | } \ | 853 | goto yybackup; \ |
835 | else \ | 854 | } \ |
836 | { \ | 855 | else \ |
856 | { \ | ||
837 | yyerror (YY_("syntax error: cannot back up")); \ | 857 | yyerror (YY_("syntax error: cannot back up")); \ |
838 | YYERROR; \ | 858 | YYERROR; \ |
839 | } \ | 859 | } \ |
@@ -928,6 +948,8 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep) | |||
928 | YYSTYPE const * const yyvaluep; | 948 | YYSTYPE const * const yyvaluep; |
929 | #endif | 949 | #endif |
930 | { | 950 | { |
951 | FILE *yyo = yyoutput; | ||
952 | YYUSE (yyo); | ||
931 | if (!yyvaluep) | 953 | if (!yyvaluep) |
932 | return; | 954 | return; |
933 | # ifdef YYPRINT | 955 | # ifdef YYPRINT |
@@ -1179,12 +1201,12 @@ static int | |||
1179 | yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, | 1201 | yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, |
1180 | yytype_int16 *yyssp, int yytoken) | 1202 | yytype_int16 *yyssp, int yytoken) |
1181 | { | 1203 | { |
1182 | YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]); | 1204 | YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); |
1183 | YYSIZE_T yysize = yysize0; | 1205 | YYSIZE_T yysize = yysize0; |
1184 | YYSIZE_T yysize1; | 1206 | YYSIZE_T yysize1; |
1185 | enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; | 1207 | enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; |
1186 | /* Internationalized format string. */ | 1208 | /* Internationalized format string. */ |
1187 | const char *yyformat = 0; | 1209 | const char *yyformat = YY_NULL; |
1188 | /* Arguments of yyformat. */ | 1210 | /* Arguments of yyformat. */ |
1189 | char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; | 1211 | char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; |
1190 | /* Number of reported tokens (one for the "unexpected", one per | 1212 | /* Number of reported tokens (one for the "unexpected", one per |
@@ -1244,7 +1266,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, | |||
1244 | break; | 1266 | break; |
1245 | } | 1267 | } |
1246 | yyarg[yycount++] = yytname[yyx]; | 1268 | yyarg[yycount++] = yytname[yyx]; |
1247 | yysize1 = yysize + yytnamerr (0, yytname[yyx]); | 1269 | yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); |
1248 | if (! (yysize <= yysize1 | 1270 | if (! (yysize <= yysize1 |
1249 | && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) | 1271 | && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) |
1250 | return 2; | 1272 | return 2; |
@@ -1329,7 +1351,7 @@ yydestruct (yymsg, yytype, yyvaluep) | |||
1329 | 1351 | ||
1330 | switch (yytype) | 1352 | switch (yytype) |
1331 | { | 1353 | { |
1332 | case 53: /* "choice_entry" */ | 1354 | case 57: /* "choice_entry" */ |
1333 | 1355 | ||
1334 | { | 1356 | { |
1335 | fprintf(stderr, "%s:%d: missing end statement for this entry\n", | 1357 | fprintf(stderr, "%s:%d: missing end statement for this entry\n", |
@@ -1339,7 +1361,7 @@ yydestruct (yymsg, yytype, yyvaluep) | |||
1339 | }; | 1361 | }; |
1340 | 1362 | ||
1341 | break; | 1363 | break; |
1342 | case 59: /* "if_entry" */ | 1364 | case 63: /* "if_entry" */ |
1343 | 1365 | ||
1344 | { | 1366 | { |
1345 | fprintf(stderr, "%s:%d: missing end statement for this entry\n", | 1367 | fprintf(stderr, "%s:%d: missing end statement for this entry\n", |
@@ -1349,7 +1371,7 @@ yydestruct (yymsg, yytype, yyvaluep) | |||
1349 | }; | 1371 | }; |
1350 | 1372 | ||
1351 | break; | 1373 | break; |
1352 | case 65: /* "menu_entry" */ | 1374 | case 69: /* "menu_entry" */ |
1353 | 1375 | ||
1354 | { | 1376 | { |
1355 | fprintf(stderr, "%s:%d: missing end statement for this entry\n", | 1377 | fprintf(stderr, "%s:%d: missing end statement for this entry\n", |
@@ -1426,7 +1448,7 @@ yyparse () | |||
1426 | `yyss': related to states. | 1448 | `yyss': related to states. |
1427 | `yyvs': related to semantic values. | 1449 | `yyvs': related to semantic values. |
1428 | 1450 | ||
1429 | Refer to the stacks thru separate pointers, to allow yyoverflow | 1451 | Refer to the stacks through separate pointers, to allow yyoverflow |
1430 | to reallocate them elsewhere. */ | 1452 | to reallocate them elsewhere. */ |
1431 | 1453 | ||
1432 | /* The state stack. */ | 1454 | /* The state stack. */ |
@@ -2012,46 +2034,66 @@ yyreduce: | |||
2012 | 2034 | ||
2013 | case 109: | 2035 | case 109: |
2014 | 2036 | ||
2015 | { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); } | 2037 | { (yyval.expr) = expr_alloc_comp(E_LTH, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); } |
2016 | break; | 2038 | break; |
2017 | 2039 | ||
2018 | case 110: | 2040 | case 110: |
2019 | 2041 | ||
2020 | { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); } | 2042 | { (yyval.expr) = expr_alloc_comp(E_LEQ, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); } |
2021 | break; | 2043 | break; |
2022 | 2044 | ||
2023 | case 111: | 2045 | case 111: |
2024 | 2046 | ||
2025 | { (yyval.expr) = (yyvsp[(2) - (3)].expr); } | 2047 | { (yyval.expr) = expr_alloc_comp(E_GTH, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); } |
2026 | break; | 2048 | break; |
2027 | 2049 | ||
2028 | case 112: | 2050 | case 112: |
2029 | 2051 | ||
2030 | { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[(2) - (2)].expr)); } | 2052 | { (yyval.expr) = expr_alloc_comp(E_GEQ, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); } |
2031 | break; | 2053 | break; |
2032 | 2054 | ||
2033 | case 113: | 2055 | case 113: |
2034 | 2056 | ||
2035 | { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } | 2057 | { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); } |
2036 | break; | 2058 | break; |
2037 | 2059 | ||
2038 | case 114: | 2060 | case 114: |
2039 | 2061 | ||
2040 | { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } | 2062 | { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); } |
2041 | break; | 2063 | break; |
2042 | 2064 | ||
2043 | case 115: | 2065 | case 115: |
2044 | 2066 | ||
2045 | { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), 0); free((yyvsp[(1) - (1)].string)); } | 2067 | { (yyval.expr) = (yyvsp[(2) - (3)].expr); } |
2046 | break; | 2068 | break; |
2047 | 2069 | ||
2048 | case 116: | 2070 | case 116: |
2049 | 2071 | ||
2050 | { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), SYMBOL_CONST); free((yyvsp[(1) - (1)].string)); } | 2072 | { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[(2) - (2)].expr)); } |
2051 | break; | 2073 | break; |
2052 | 2074 | ||
2053 | case 117: | 2075 | case 117: |
2054 | 2076 | ||
2077 | { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } | ||
2078 | break; | ||
2079 | |||
2080 | case 118: | ||
2081 | |||
2082 | { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } | ||
2083 | break; | ||
2084 | |||
2085 | case 119: | ||
2086 | |||
2087 | { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), 0); free((yyvsp[(1) - (1)].string)); } | ||
2088 | break; | ||
2089 | |||
2090 | case 120: | ||
2091 | |||
2092 | { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), SYMBOL_CONST); free((yyvsp[(1) - (1)].string)); } | ||
2093 | break; | ||
2094 | |||
2095 | case 121: | ||
2096 | |||
2055 | { (yyval.string) = NULL; } | 2097 | { (yyval.string) = NULL; } |
2056 | break; | 2098 | break; |
2057 | 2099 | ||
@@ -2243,7 +2285,7 @@ yyabortlab: | |||
2243 | yyresult = 1; | 2285 | yyresult = 1; |
2244 | goto yyreturn; | 2286 | goto yyreturn; |
2245 | 2287 | ||
2246 | #if !defined(yyoverflow) || YYERROR_VERBOSE | 2288 | #if !defined yyoverflow || YYERROR_VERBOSE |
2247 | /*-------------------------------------------------. | 2289 | /*-------------------------------------------------. |
2248 | | yyexhaustedlab -- memory exhaustion comes here. | | 2290 | | yyexhaustedlab -- memory exhaustion comes here. | |
2249 | `-------------------------------------------------*/ | 2291 | `-------------------------------------------------*/ |
diff --git a/scripts/kconfig/zconf.y b/scripts/kconfig/zconf.y index 0f683cfa53e9..71bf8bff696a 100644 --- a/scripts/kconfig/zconf.y +++ b/scripts/kconfig/zconf.y | |||
@@ -69,6 +69,10 @@ static struct menu *current_menu, *current_entry; | |||
69 | %token <string> T_WORD | 69 | %token <string> T_WORD |
70 | %token <string> T_WORD_QUOTE | 70 | %token <string> T_WORD_QUOTE |
71 | %token T_UNEQUAL | 71 | %token T_UNEQUAL |
72 | %token T_LESS | ||
73 | %token T_LESS_EQUAL | ||
74 | %token T_GREATER | ||
75 | %token T_GREATER_EQUAL | ||
72 | %token T_CLOSE_PAREN | 76 | %token T_CLOSE_PAREN |
73 | %token T_OPEN_PAREN | 77 | %token T_OPEN_PAREN |
74 | %token T_EOL | 78 | %token T_EOL |
@@ -76,6 +80,7 @@ static struct menu *current_menu, *current_entry; | |||
76 | %left T_OR | 80 | %left T_OR |
77 | %left T_AND | 81 | %left T_AND |
78 | %left T_EQUAL T_UNEQUAL | 82 | %left T_EQUAL T_UNEQUAL |
83 | %left T_LESS T_LESS_EQUAL T_GREATER T_GREATER_EQUAL | ||
79 | %nonassoc T_NOT | 84 | %nonassoc T_NOT |
80 | 85 | ||
81 | %type <string> prompt | 86 | %type <string> prompt |
@@ -467,6 +472,10 @@ if_expr: /* empty */ { $$ = NULL; } | |||
467 | ; | 472 | ; |
468 | 473 | ||
469 | expr: symbol { $$ = expr_alloc_symbol($1); } | 474 | expr: symbol { $$ = expr_alloc_symbol($1); } |
475 | | symbol T_LESS symbol { $$ = expr_alloc_comp(E_LTH, $1, $3); } | ||
476 | | symbol T_LESS_EQUAL symbol { $$ = expr_alloc_comp(E_LEQ, $1, $3); } | ||
477 | | symbol T_GREATER symbol { $$ = expr_alloc_comp(E_GTH, $1, $3); } | ||
478 | | symbol T_GREATER_EQUAL symbol { $$ = expr_alloc_comp(E_GEQ, $1, $3); } | ||
470 | | symbol T_EQUAL symbol { $$ = expr_alloc_comp(E_EQUAL, $1, $3); } | 479 | | symbol T_EQUAL symbol { $$ = expr_alloc_comp(E_EQUAL, $1, $3); } |
471 | | symbol T_UNEQUAL symbol { $$ = expr_alloc_comp(E_UNEQUAL, $1, $3); } | 480 | | symbol T_UNEQUAL symbol { $$ = expr_alloc_comp(E_UNEQUAL, $1, $3); } |
472 | | T_OPEN_PAREN expr T_CLOSE_PAREN { $$ = $2; } | 481 | | T_OPEN_PAREN expr T_CLOSE_PAREN { $$ = $2; } |