0

Я побежал в Старый Множественный выбор:Синтаксический Стол с LL (1) и одной викторины

, какие из следующих не произошло, когда мы используем LL (1) Синтаксический ... предположим, что входы, которые будут правильно или нет, заканчиваются на $.

E -> FT$ 
T -> *FT | epsilon 
F -> id | (E) 


a) a symbol on the top of stack is not the same with input symbol. 

b) the stack is empty, but input is remaining. 

c) the input is finished, but stack is not empty. 

d) the parse table in non terminal on the top of stack and terminal of input be empty. 

Ответ на запрос (2) верен. любое описание или учебник?

ответ

0

Вам нужно освежить английский, чтобы он имел смысл (действительно !!!!) и самосогласован, но я могу сделать некоторые догадки о том, что должно было быть сказано. Простите меня, если я не догадаюсь, во всех случаях.

Теперь я никогда не делал разбора LL через явный стек (для меня это просто вызов подпрограммы для каждого нетерминала в разумной реализации), но то, что у вас есть, безусловно, разрешимо с помощью 1-точечного вида , поэтому я полагаю, что я могу рассуждать на основе LL, анализируя свой путь и игнорируя «(1)» в вашем «LL (1)», просто рассказывая мне, как далеко вы готовы отступить (ответ: совсем нет следующий символ).

Во-первых, ваш вопрос за ручьем, потому что если я дам этот парсер! (% * (%% ^% как входной сигнал, он будет терпеть неудачу, который оставит очень много входных данных «оставаясь» до того, как он даже начнется, поэтому я полагаю, что если ваша реализация имеет стек, она начинает пустую , остается пустым, заканчивается пустым, а вход все несъеденен, что противоречит «б» «(не« (2) »!!!!! Пожалуйста, легко все поняли - как мы можем вам доверять?)

У меня есть идея, что означает ваш «а», потому что вы не сказали мне, как вы реализуете этот парсер. Бессмысленно спрашивать меня о вашей конкретной реализации, не описывая ее. Вы делаете это по-своему, и я делаю это по-своему. Вы могли бы спросить меня, где ваши носки ... Я не знаю! Однако я предполагаю, что стек заполнен входными символами. Я не знаю, что с ними происходит, но я должен предположить, что они идут на вершину стека (вы имеете в виду «нижний»? Это то место, где обычно ставятся новые вещи в стек!), А верх будет равен внизу, когда в стек находится только один символ. Он не был отклонен, поэтому он был либо «(« или «идентификатором» [просьба сделать его PLAIN, что ваши маркеры!) Я предполагаю, что «id» является аббревиатурой класса токенов и «(» является буквальным token. ПОЖАЛУЙСТА, будьте осторожны при настройке своего вопроса :-(].

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

Кроме того, по-моему, единственная причина для размещения чего-то в стеке - это «(«, поскольку вы еще не знаете, следует ли его отклонить. Если бы это был «id «вы бы съели токен, по правилу 1, продолжающемуся 2, продолжая 3 [что это« * »делает в ваших правилах грамматики! Удалите, если это не означает, что вы не говорите].

Тогда любой может поместить любой символ, который им нравится на входе. Он будет отклонен, если он не является идентификатором или «(», но что именно? [Просьба пояснить, если вы говорите о принятых входах!]. Так что «а» «противоречит. Даже если бы следующий символ был принят, это не ограничивало бы его «(« снова, так «а»), все еще противоречит.

Что касается "c" ", то это мертво легко достичь. Просто поставьте «x». «X» будет употребляться как идентификатор, а «(« будет идти в стеке, но тогда больше нет ввода », и здесь не было« $ »или что-то еще, чтобы фолить вещи вверх или покончить с ними [пожалуйста, ОБРАТИТЕСЬ, если «$» означает конец ввода или это символ!].

Если «$» означает конец ввода, однако, я не вижу способа иметь что-то в стеке в этой точке. Ваши действительные входы: x или xx или x (x) или x (xx) или xx (x) или xxx (x (xx)) и т. Д. Если стек не пуст, когда будет вид конца ввода, это будет ошибкой условие [уточните, пожалуйста, если вы говорите о всех возможных входах или просто принятых вводах!].

Ваш «d» «довольно ошеломил мой разум относительно того, что он может означать на английском. Пожалуйста, исправьте это [и другие вещи, отмеченные и не отмеченные здесь!].

[Все, кто читает этот вопрос, заметят, что это имеет смысл только в контексте того, кто не может выполнить упражнение по классу или упражнение по предыдущему курсу, создавая плохую копию на глобальном веб-сайте, не понимая, что вопрос требует от него знайте, какая реализация и язык преподаются классу, и тщательно определить реакцию ошибок и время наблюдений. Это несколько обескураживает меня.]

 Смежные вопросы

  • Нет связанных вопросов^_^