Вопросы по теме 'lalr'

В чем заключается конфликт сдвига / уменьшения в этой программе SLY?
Я портирую код с pyparsing на SLY, это грамматика лямбда-вычисления. У меня есть это правило from sly import Lexer, Parser class Lex(Lexer): tokens = {ID, LAMB, DOT, LPAR, RPAR} ID = r"[a-z]" LAMB = r"λ" DOT =...
113 просмотров
schedule 04.10.2021

Простая грамматика для Lemon LALR Parser
Я застрял с этим с некоторого времени. Я хочу разобрать что-то простое, например: НРАВИТСЯ: слово1 слово2 .. словоN НЕНАВИДИТ: слово1 слово2 .. словоN Я использую Lemon+Flex. На данный момент моя грамматика выглядит примерно так: %left...
1120 просмотров
schedule 27.03.2022

Можно ли изменить файл грамматики ANTLR для использования PLY?
Я хочу создать программу на Python, которая использует PLY для анализа файлов Javascript, я не нашел источников парсеров, реализующих правила ECMAScript, Javascript, использующие PLY. Единственное, что я нашел, это несколько файлов грамматики ANTLR...
552 просмотров
schedule 10.04.2022

Есть ли общий способ преобразовать однозначную контекстно-свободную грамматику в грамматику LALR (1)?
Я пытаюсь создать парсер LALR (1) для следующей грамматики и обнаруживаю некоторые конфликты сдвига / уменьшения. S := expr expr := lval | ID '[' expr ']' OF expr lval := ID | lval '[' expr ']' Таким образом, парсер не может правильно...
937 просмотров

Является ли грамматика QML LALR (1)?
Вот грамматика QML (извлечена из https://github.com/kropp/intellij-qml/blob/master/grammars/qml.bnf ): /* identifier, value, integer and float are terminals */ qml ::= object /* Simplified */ object ::= type body body ::= '{'...
151 просмотров
schedule 24.06.2022

Использование правил midaction в Lemon для интерпретации выражения let
Я пытаюсь написать «игрушечный» интерпретатор, используя Flex + Lemon, который поддерживает очень простой синтаксис «let», где переменная X временно привязана к выражению. Например, «letx 3 + 4 in x + 8» должно оцениваться как 15. По сути, я бы...
101 просмотров
schedule 11.08.2022

Можно ли проанализировать эту кажущуюся двусмысленность в анализаторе LALR(1) (PLY)?
У меня есть большая грамматика в PLY (Python Lexx Yacc) для языка, у которого есть определенные проблемы при разборе. Язык позволяет ведущему синтаксису двух видов вызовов выглядеть одинаково почти до конца нетерминального вызова. Это дает много...
260 просмотров
schedule 21.08.2022

Генератор синтаксического анализатора Beaver конфликты сдвига-уменьшения, связанные с зависанием else
Я скармливаю (сгенерированную) грамматику генератору синтаксического анализатора Beaver. Множественные конфликты сдвиг-уменьшение вызваны, кажется, проблемой висячего else в этих правилах: Condition = IF LPAR Expression.expression RPAR...
70 просмотров

Разобрать блок, где каждая строка начинается с определенного символа
Мне нужно разобрать блок кода, который выглядит так: * Block | Line 1 | Line 2 | ... Это легко сделать: block : head lines; head : '*' line; lines : lines '|' line | '|' line ; Теперь мне интересно, как я могу добавить...
139 просмотров
schedule 14.09.2022

Генератор парсеров LALR(1) для scala
Я знаю, что можно использовать, например, файлы Java, сгенерированные bison, в проекте scala, но существуют ли какие-либо встроенные генераторы LALR(1) "грамматика для scala"?
1724 просмотров
schedule 01.10.2022

Какие преимущества у парсеров LL перед парсерами LR?
Какие преимущества имеют парсеры LL перед парсерами LR, чтобы гарантировать их относительную популярность в современных инструментах генерации парсеров ? Согласно Wikipedia , синтаксический анализ LR имеет преимущества перед LL:...
13847 просмотров
schedule 21.01.2023

Генератор парсеров CUP LALR: предупреждение: производство никогда не сокращалось
это первый раз, когда я использую синтаксический анализатор CUP, и я продолжаю получать следующую ошибку: "предупреждение: * продукция "..." никогда не использовалась. Я не могу понять, что не так, пожалуйста, помогите , см. код и журнал ошибок,...
3715 просмотров
schedule 02.06.2023

Значение выражения YACC с использованием yysindex и yyrindex
В проекте на основе yacc я столкнулся со сложным выражением, которое я не понимаю, что оно делает. Выражение повторяется несколько раз, поэтому оно выглядит как копирование и вставка. На самом деле точно такое же выражение встречается внутри...
57 просмотров
schedule 25.07.2023

Можно ли использовать yacc для генерации трехадресного кода для Java 1?
Я читал, что yacc генерирует анализатор снизу вверх для грамматик LALR(1). У меня есть грамматика для Java 1, которую можно использовать для генерации трехадресного кода, и она является строго LALR(1), но схема трансляции, которую я использую, делает...
108 просмотров

Конфликты Ply shift/reduce: зависание else и пустое производство
У меня было много конфликтов, большинство из них были из-за операторов и реляционных операторов, которые имели разный приоритет. Но я все еще сталкиваюсь с некоторыми конфликтами, которые я действительно не знаю, как с ними справиться. некоторые из...
55 просмотров
schedule 08.02.2023

Ирония: как дать KeyTerm приоритет над переменной?
Соответствующий фрагмент грамматики Irony : var VARIABLE = new RegexBasedTerminal("variable", @"(?-i)\$?\w+"); variable.Rule = VARIABLE; tag_blk.Rule = html_tag_kw + attr_args_opt + block; term_simple.Rule = NUMBER | STRING | variable | boolean...
1075 просмотров
schedule 18.01.2024