Вопросы по теме '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 просмотров
schedule
24.06.2022
Является ли грамматика 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 просмотров
schedule
29.08.2022
Разобрать блок, где каждая строка начинается с определенного символа
Мне нужно разобрать блок кода, который выглядит так:
* 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 просмотров
schedule
21.06.2023
Конфликты 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