Your keywords aren't sorted. On Tue, Jun 7, 2011 at 12:09 PM, Rafael Sadowski <raf...@sizeofvoid.org>wrote:
> On Wed Jun 01, 2011 at 11:03:46AM +0200, Otto Moerbeek wrote: > > On Wed, Jun 01, 2011 at 10:54:05AM +0200, Rafael Sadowski wrote: > > > > > Hello @tech, > > > > > > I hope anybody can help my with my yacc rules/grammer. I can't find > bugs > > > in my grammer. I think the problem is in the lexer but I have no idea, > > > how debug it. GDB tells me: "No Source Available" for yyparse (). Any > > > advice, how debug it? This is my first experience with YACC! > > > > > > Maybe any yacc/lex hacker has a minute to look over my parse.y. I am > > > grateful for any advice. My parse.y based on ospfd and relayd. > > > > Run yacc with -t and set yydebug = 1 in your code. That will reveal > > the tokens yacc sees and what it does with them. > > > > -Otto > > > > Thanks Otto, this helped me a lot. Now, I'm one step big forward. > > I found one (In my opinion) strangeness in my grammeri/rule. It is > important to declare the TOKEN in dependence to other TOKEN? > > It will not work with following rule, if I change WIRELESSNAME to > NETMASK it works file. I don't know why, what is the different between > WIRELESSNAME and NETMASK? > > > wirelessoptsl : WIRELESSNAME STRING '{' { > } > | PRIORITY NUMBER optnl { > } > '}' > ; > > > ### my tokes: > > %token NETWORK ETHERNETNAME WIRELESSNAME > %token BSSID CHANNEL DHCP DOMAINNAME DOMAINNAMESERVERS ERROR > %token INCLUDE INET INTERFACE YES > %token LLADDR MINSIGNAL NETMASK NWID NO PRIORITY RUNDOWN RUNUP > %token UPDATEINTERVAL WEP WEPKEY > %token WPA WPAAKMS WPACIPHERS WPAGROUPCIPHER WPAKEY > %token <v.string> STRING > %token <v.number> NUMBER > %type <v.string> string > > ### my keywords: > > static const struct keywords keywords[] = { > { "bssid", BSSID }, > { "channel", CHANNEL }, > { "dhcp", DHCP }, > { "domain-name", DOMAINNAME }, > { "domain-name-servers", DOMAINNAMESERVERS }, > { "error", ERROR }, > { "ethernet", ETHERNETNAME }, > { "include", INCLUDE }, > { "inet", INET }, > { "interface", INTERFACE }, > { "yes", YES }, > { "lladdr", LLADDR }, > { "minsignal", MINSIGNAL }, > { "netmask", NETMASK }, > { "network", NETWORK }, > { "nwid", NWID }, > { "no", NO }, > { "priority", PRIORITY }, > { "run-down", RUNDOWN }, > { "run-up", RUNUP }, > { "update_interval", UPDATEINTERVAL }, > { "wireless", WIRELESSNAME }, > { "wep", WEP}, > { "wepkey", WEPKEY}, > { "wpa", WPA}, > { "wpaakms", WPAAKMS }, > { "wpaciphers", WPACIPHERS }, > { "wpagroupcipher", WPAGROUPCIPHER }, > { "wpakey", WPAKEY } > }; > const struct keywords *p; > > ### my config file (crashed with "wireless", works with "netmask"): > > network local { > ethernet home { > priority 23 > } > ethernet work { > priority 23 > } > wireless park { > priority 23 > } > } > > -- > http://www.sizeofvoid.org - raf...@sizeofvoid.org > XMPP: z...@jabber.ccc.de > Key fingerprint: BDDD 91E9 28CB 3A52 3E99 61B0 C359 2691 BAC6 A3B1