EBNF или BNF для языка программирования LOGO

Кто-нибудь знает, где я могу взять BNF или EBNF для языка программирования LOGO?


person Vivin Paliath    schedule 25.07.2011    source источник
comment
Не уверен, кто проголосовал за то, чтобы закрыть это как не по теме. Язык программирования есть даже в названии ...   -  person Cody Gray    schedule 25.07.2011
comment
Похоже, что это попало в Reddit, я защищаю это сейчас (будет снято с защиты через несколько дней). Это не проблема, пока, просто мера предосторожности.   -  person Tim Post♦    schedule 26.07.2011
comment
Сообщение @Tim Это попало в сабреддит программирования Reddit, я не понимаю, почему это вызывает тревогу. Может быть, это даже была хорошая возможность привлечь новых пользователей?   -  person Sled    schedule 27.07.2011
comment
Не по теме? Хорошо сыграно, мод. Голосование для открытия.   -  person    schedule 21.09.2012
comment
Как вопрос по поводу того, что EBNF и BNF не по теме ?!   -  person Vivin Paliath    schedule 21.09.2012


Ответы (2)


Грамматика BNF может оказаться не слишком полезной в определенных обстоятельствах ...

Написать ЛОГОТИП, который точно совместим с существующей / исторической реализацией, - непростая задача (я работал над таким проектом). Проблема в том, что синтаксический анализатор не выполняет всю работу, а оценщик (интерпретатор) должен работать с частичными данными. Рассмотрим этот пример:

proc1 a b proc2 c

Это может означать proc1 (a, b, proc2 (c)) или proc1 (a, b, proc2 (), c) в зависимости от количества параметров для proc1 и proc2.

Более того, известные мне интерпретаторы LOGO, например Berkely LOGO, на первый взгляд кажутся не написавшими традиционный синтаксический анализатор, который дополнительно имеет доступ к каждой процедуре и ее арности; вместо этого они запускают процедуры, и процедуры «съедают» необходимое им количество параметров. Это делает синтаксический анализатор немного наивным, а главную роль играет интерпретатор, поэтому синтаксический анализ является чем-то необычным.

person Mohamed Samy    schedule 25.07.2011
comment
Так вы говорите, что не может быть однозначной грамматики для языка? - person Vivin Paliath; 26.07.2011
comment
Да, я думаю, что такой грамматики не существует (независимо от двусмысленности), если только это не наивная грамматика, которая анализирует командную строку в основном как есть и просто разрешает инфиксные операторы и тому подобное. - person Mohamed Samy; 26.07.2011
comment
Правильно, наивный синтаксический анализатор просто проанализирует в соответствии с грамматикой, но не поймет арность встроенных функций. Казалось бы, во время синтаксического анализа нужно будет искать арность функции, прежде чем решать, как анализировать последующие токены. Также имеет смысл, как вы сказали, анализировать по ходу дела. - person Vivin Paliath; 26.07.2011
comment
Синтаксический анализ - это способ моей собственной реализации логотипа Logo Arabic. Я на самом деле не изучал сцену реализации LOGO, а сам парсер является специальным, поэтому я не утверждаю, что моя работа является передовой практикой или даже хорошей практикой; но источник может быть полезен для вашей работы. - person Mohamed Samy; 26.07.2011
comment
Огромное спасибо! Я обязательно на это посмотрю! - person Vivin Paliath; 26.07.2011
comment
@VivinPaliath, особенно плохой является знак минус (т.е. - в -52). При синтаксическом анализе вы сохраняете свои слова (минус - слово) в списке. Когда вы печатаете список, вы пишете пробелы между словами, ЗА ИСКЛЮЧЕНИЕМ знака минус, потому что если вы добавляете пробел после минуса, он становится РАЗНИЦОМ (т.е. 33 -52 отличается от 33 - 52). Для чисел вы, вероятно, сразу же конвертируете значение. Однако это очень важно, когда вы пишете -:A. В этом случае вам нужна противоположность _6 _... - person Alexis Wilke; 28.06.2019

Стандартной реализации LOGO не существует.

Вероятно, вам лучше всего посмотреть на источник популярной реализации, такой как UCBLogo

person bitgarden    schedule 25.07.2011