Анализатор ввода бизонов - основной вопрос по необязательной грамматике и интерпретации ввода - PullRequest
2 голосов
/ 27 мая 2010

Я очень новичок в Flex / Bison, так что это очень наиве вопрос.
Простите меня, если так. Может выглядеть как домашнее задание, но мне нужно реализовать проект на основе приведенной ниже концепции.

Мой вопрос связан с двумя частями,
Вопрос 1
В парсере Bison, Как мне предоставить правила для необязательного ввода.

Мол, мне нужно разобрать запись
Пример:

-country='USA' -state='INDIANA' -population='100' -ratio='0.5' -comment='Census study for Indiana'

Здесь токен отношения может быть необязательным. Точно так же, если у меня есть много необязательных токенов, то как я могу предоставить грамматику в парсере для того же самого?

Мой код выглядит так,

% запуска программы
программа: TK_COUNTRY TK_IDENTIFIER TK_STATE TK_IDENTIFIER TK_POPULATION TK_IDENTIFIER ...
где все токены определены в лексере. Поскольку есть много токенов, которые являются необязательными, если я использую "|" тогда будет много разных способов ввода.

Вопрос 2
Есть большая вероятность, что комментарий может содержать кавычки как часть ввода, поэтому я добавил токен -tag, который пользователь может предоставить для интерпретации того же самого,

Пример:

-country='USA' -state='INDIANA' -population='100' -ratio='0.5' -comment='Census study for Indiana$'s population' -tag=$  

Теперь мне нужно переосмыслить Индиану как Индиану с -tag=$.

Пожалуйста, предоставьте любые материалы или материалы для понимания этой темы.

1 Ответ

1 голос
/ 27 мая 2010

Q1: я предполагаю, что у нас есть 4 возможных токена: NAME, '-', '=' и VALUE

Тогда грамматика может выглядеть так:

attrs: 
    attr attrs
    | attr
    ;

attr:
   '-' NAME '=' VALUE
   ;

Обратите внимание, что, в отличие от того, что вы делаете особые имена атрибутов отличительными токенами, нет никакого способа сказать: «У нас должны быть страна, штат и население, но соотношение необязательно». Это будет задачей той части программы, которая анализирует данные, полученные анализатором.

Q2: Я так понимаю, что вы думаете об изменении способа работы лексического анализа во время работы анализатора. Это не очень хорошая идея, по крайней мере, не для начинающих. Вы даже начали задумываться о лексическом анализе, в отличие от разбора?

...