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

Reply via email to