парсинг с бизоном - PullRequest
       12

парсинг с бизоном

1 голос
/ 06 октября 2009

Я купил Flex & Bison у О'Рейли, но у меня возникли некоторые проблемы с реализацией парсера (разбить вещи на токены было не сложно)

Предположим, у меня есть огромная двоичная строка, и мне нужно сложить биты вместе - каждый бит является токеном:

 [0-1] { return NUMBER;}

1101010111111

Или, если на то пошло, набор токенов без "операции".

Будет ли такая грамматика правильной?

calclist :
         | calclist expr EOL {eval($2)}
expr: NUMBER
      |expr NUMBER { $$=$1+$2 }

или есть лучший способ сделать это?

1 Ответ

2 голосов
/ 06 октября 2009

Ваше примерное правило lex "[0-1] {return NUMBER;}" не устанавливает yylval, поэтому, если вы используете это значение в своей грамматике (как вы делаете в правиле "expr NUMBER {$$ = $ 1+ $ 2;} ") вы получите мусор.

В целом то, что вы делаете, правильно, хотя выбранная вами задача настолько тривиальна, что lex / bison - это серьезное излишество.

...