aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-07-02 17:53:01 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-07-02 17:53:01 -0400
commita95cb3cd55c208372ca68d5e8a9923611fed7235 (patch)
tree0dc63eada59fc93c902605d9495ae32ef6998e09
parent19127af9d81f0fcecc3e54fab64b7a7f2f91a92b (diff)
parent4a47f1eb35c5933ef32b2b99ef20f8fe4a251429 (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/Makefile28
-rw-r--r--scripts/kconfig/expr.c278
-rw-r--r--scripts/kconfig/expr.h4
-rw-r--r--scripts/kconfig/symbol.c4
-rw-r--r--scripts/kconfig/zconf.l11
-rw-r--r--scripts/kconfig/zconf.lex.c_shipped314
-rw-r--r--scripts/kconfig/zconf.tab.c_shipped524
-rw-r--r--scripts/kconfig/zconf.y9
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
86PHONY += oldnoconfig savedefconfig defconfig 86PHONY += 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.
91oldnoconfig: olddefconfig 91oldnoconfig: olddefconfig
92 92
@@ -126,10 +126,11 @@ tinyconfig:
126# Help text used by make help 126# Help text used by make help
127help: 127help:
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
171lxdialog := lxdialog/checklist.o lxdialog/util.o lxdialog/inputbox.o 173lxdialog := 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
278ifeq ($(MAKECMDGOALS),gconfig) 280ifeq ($(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
14static int expr_eq(struct expr *e1, struct expr *e2); 14static int expr_eq(struct expr *e1, struct expr *e2);
15static struct expr *expr_eliminate_yn(struct expr *e); 15static struct expr *expr_eliminate_yn(struct expr *e);
16static struct expr *expr_extract_eq_and(struct expr **ep1, struct expr **ep2);
17static struct expr *expr_extract_eq_or(struct expr **ep1, struct expr **ep2);
18static void expr_extract_eq(enum expr_type type, struct expr **ep, struct expr **ep1, struct expr **ep2);
19 16
20struct expr *expr_alloc_symbol(struct symbol *sym) 17struct 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
562static 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
618struct expr *expr_eliminate_dups(struct expr *e) 571struct 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
832static 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
843static 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
854static 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
883struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym) 808struct 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
873enum string_value_kind {
874 k_string,
875 k_signed,
876 k_unsigned,
877 k_invalid
878};
879
880union string_value {
881 unsigned long long u;
882 signed long long s;
883};
884
885static 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
944tristate expr_calc_value(struct expr *e) 917tristate 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
985static int expr_compare_type(enum expr_type t1, enum expr_type t2) 997static 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
31enum expr_type { 31enum 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
35union expr_data { 37union 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
366extern char *zconftext; 366extern char *zconftext;
367#define yytext_ptr zconftext 367#define yytext_ptr zconftext
368static yyconst flex_int16_t yy_nxt[][17] = 368static 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. */
708struct yy_trans_info 739struct 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 };
713static yyconst flex_int16_t yy_accept[61] = 744static 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
723static yyconst flex_int32_t yy_ec[256] = 755static 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
1143case 16: 1175case 16:
1144YY_RULE_SETUP 1176YY_RULE_SETUP
1177return T_LESS_EQUAL;
1178 YY_BREAK
1179case 17:
1180YY_RULE_SETUP
1181return T_GREATER_EQUAL;
1182 YY_BREAK
1183case 18:
1184YY_RULE_SETUP
1185return T_LESS;
1186 YY_BREAK
1187case 19:
1188YY_RULE_SETUP
1189return T_GREATER;
1190 YY_BREAK
1191case 20:
1192YY_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
1151case 17: 1199case 21:
1152/* rule 17 can match eol */ 1200/* rule 21 can match eol */
1153YY_RULE_SETUP 1201YY_RULE_SETUP
1154BEGIN(INITIAL); current_file->lineno++; return T_EOL; 1202BEGIN(INITIAL); current_file->lineno++; return T_EOL;
1155 YY_BREAK 1203 YY_BREAK
1156case 18: 1204case 22:
1157YY_RULE_SETUP 1205YY_RULE_SETUP
1158/* ignore */ 1206/* ignore */
1159 YY_BREAK 1207 YY_BREAK
1160case 19: 1208case 23:
1161YY_RULE_SETUP 1209YY_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
1173case 20: 1221case 24:
1174YY_RULE_SETUP 1222YY_RULE_SETUP
1175/* comment */ 1223/* comment */
1176 YY_BREAK 1224 YY_BREAK
1177case 21: 1225case 25:
1178/* rule 21 can match eol */ 1226/* rule 25 can match eol */
1179YY_RULE_SETUP 1227YY_RULE_SETUP
1180current_file->lineno++; 1228current_file->lineno++;
1181 YY_BREAK 1229 YY_BREAK
1182case 22: 1230case 26:
1183YY_RULE_SETUP 1231YY_RULE_SETUP
1184 1232
1185 YY_BREAK 1233 YY_BREAK
1234case 27:
1235YY_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
1186case YY_STATE_EOF(PARAM): 1242case YY_STATE_EOF(PARAM):
1187{ 1243{
1188 BEGIN(INITIAL); 1244 BEGIN(INITIAL);
1189 } 1245 }
1190 YY_BREAK 1246 YY_BREAK
1191 1247
1192case 23: 1248case 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;
1196YY_DO_BEFORE_ACTION; /* set up zconftext again */ 1252YY_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
1204case 24: 1260case 29:
1205YY_RULE_SETUP 1261YY_RULE_SETUP
1206{ 1262{
1207 append_string(zconftext, zconfleng); 1263 append_string(zconftext, zconfleng);
1208 } 1264 }
1209 YY_BREAK 1265 YY_BREAK
1210case 25: 1266case 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;
1214YY_DO_BEFORE_ACTION; /* set up zconftext again */ 1270YY_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
1222case 26: 1278case 31:
1223YY_RULE_SETUP 1279YY_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
1228case 27: 1284case 32:
1229YY_RULE_SETUP 1285YY_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
1239case 28: 1295case 33:
1240/* rule 28 can match eol */ 1296/* rule 33 can match eol */
1241YY_RULE_SETUP 1297YY_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
1255case 29: 1311case 34:
1256YY_RULE_SETUP 1312YY_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
1280case 30: 1336case 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;
1284YY_DO_BEFORE_ACTION; /* set up zconftext again */ 1340YY_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
1292case 31: 1348case 36:
1293/* rule 31 can match eol */ 1349/* rule 36 can match eol */
1294YY_RULE_SETUP 1350YY_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
1300case 32: 1356case 37:
1301YY_RULE_SETUP 1357YY_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
1331case 33: 1387case 38:
1332YY_RULE_SETUP 1388YY_RULE_SETUP
1333YY_FATAL_ERROR( "flex scanner jammed" ); 1389YY_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. */
493static const yytype_int8 yyrhs[] = 507static 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. */
533static const yytype_uint16 yyrline[] = 548static 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. */
588static const yytype_uint8 yyr1[] = 605static 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[] =
624static const yytype_uint8 yydefact[] = 643static 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]. */
649static const yytype_int16 yydefgoto[] = 668static 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
661static const yytype_int16 yypact[] = 680static 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]. */
686static const yytype_int16 yypgoto[] = 705static 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
699static const yytype_int16 yytable[] = 718static 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
739static const yytype_int16 yycheck[] = 758static 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. */
775static const yytype_uint8 yystos[] = 794static 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) \
827do \ 846do \
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
1179yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, 1201yysyntax_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
469expr: symbol { $$ = expr_alloc_symbol($1); } 474expr: 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; }