BNFC - это инструмент построения компилятора BNF Converter, который берет аннотированную грамматику BNF (форма Бэкуса-Наура) и создает на ее основе синтаксический анализатор.
1 ответ

BNFC довольно принтер Java ошибка

У меня есть этот файл BNFC, описывающий файл конфигурации, состоящий из многих разделов, где у каждого раздела есть имя между [], за которым следует список простого объявления comment "#"; rulse Boolean ::= "True" | "False"; Conf. Config ::= [Sectio…
30 май '16 в 15:57
1 ответ

Где я могу найти справочное руководство по bnfc?

Я не могу найти справочную страницу для bnfc. На домашней странице bnfc нет ссылки, указывающей на страницу руководства. Единственная известная мне опция -m для генерации файла make; но это знание я узнал из учебника на домашней странице bnfc. То, ч…
10 янв '14 в 15:26
2 ответа

Установка уровней приоритета в грамматике BNFC

Фон: Я беру урок по семантике программного обеспечения, и мы должны создать небольшой компилятор и среду исполнения для игрушечного языка под названием while. Нам дали скелет кода для Java, но нам разрешено использовать любой язык, который мы хотим…
28 апр '13 в 11:35
1 ответ

Как правильно использовать принуждения, чтобы не было скобок?

Почему следующая грамматика не распознает nat -> nat но признает (nat -> nat) и как я могу это исправить? TNat . Typ4 ::= "nat" ; TVoid . Typ4 ::= "<>" ; TProd . Typ3 ::= SumType; TProd . Typ2 ::= Typ2 "*" Typ3; TArrow . Typ1 ::= Typ1 "-…
15 сен '17 в 14:10
2 ответа

Ошибка установки BNFC

Я пытаюсь установить BNFC на моем Mac (под управлением ОС Sierra). Я уже установил платформу Haskell для Mac (v.8.0.1). Я установил cabal, а затем использовал ее для установки alex (v 3.2.1) и happy (v 1.19.5). Затем я запустил cabal install bnfc, и…
23 ноя '16 в 15:58
1 ответ

Парсер в C# и печать AST

Я реализую AST (Абстрактное синтаксическое дерево) в C# для сложной грамматики, однако, чтобы упростить этот вопрос, я буду использовать очень простую грамматику. Рассмотрим эту грамматику: rules Expr ::= Term "+" Term | Term ; rules Term ::= Ident …
26 мар '16 в 02:41
1 ответ

Как использовать java_cup шаг за шагом?

Я совершенно новичок в java_cup и разборе, и я хотел бы создать парсер для простой грамматики, используя bnfc и javacup. Я указал правила грамматики и использовал bnfc: bnfc -java -filename.cf который сгенерировал мне несколько файлов (например, fil…
10 ноя '13 в 13:17
1 ответ

БНФК Плохое принуждение в правиле

Я пытаюсь написать компилятор с BNFC. Я собираюсь использовать BNFC для генерации абстрактного синтаксического дерева. Но я получаю ошибки и не могу понять, почему. Там, кажется, не так много документации по этому вопросу. Вот ошибки, которые я полу…
20 мар '16 в 06:25
1 ответ

Грамматика BNF для простого примера программы на C++

Поэтому я пытаюсь написать грамматику для простой программы на C++. вот как выглядит грамматика прямо сейчас: PDefs. Program ::= [Def] ; terminator Def "" ; comment "//" ; comment "/*" "*/" ; comment "#" ; DFun. Def ::= Type Id "(" [Arg] ")" "{" [St…
30 янв '15 в 09:50
0 ответов

Внутренние правила в BNFC для синтаксически направленного перевода?

BNFC позволяет использовать "внутренние" правила для помощи в синтаксически направленном переводе. Канонический пример, который они дают, для аннотации типа internal VarT . Exp ::= "(" Ident ":" Type "); Это дает нам новую часть AST, Exp = ... | Var…
10 сен '13 в 22:53
1 ответ

BNFC для определения логического токена

Я пытаюсь написать парсер с BNF Converter. Грамматика, которую я использую, позволяет такие вещи, как a ::= true а также b ::= false, Поэтому я пытаюсь создать токен для этого. Это то, что я до сих пор: token BVAL ("true"|"false"); Я надеюсь использ…
20 мар '16 в 04:36
1 ответ

Написать грамматику BNFC для программы на C++

Поэтому я пишу грамматику, используя BNF-конвертер (BNFC) для синтаксического анализа программы на С ++. Программа на С ++ выглядит следующим образом. // a small C++ program #include <iostream> int main() { std::cout << "i"; return 0; } …
06 ноя '17 в 14:06
2 ответа

Как написать грамматику для шестнадцатеричных чисел в BNFC?

Вот крошечная грамматика для шестнадцатеричных целых чисел. Numbers . Numbers ::= [HexInt]; separator HexInt " " ; token HexDigit ["0123456789abcdefABCDEF"] ; rules HexInt ::= "0x" [HexDigit] ; separator HexDigit "" ; Однако он не может проанализиро…
16 май '17 в 18:55
1 ответ

Подключение инструмента сборки в Кабале (Хаскелл)

Я пытался использовать bnfc инструмент для генерации множества файлов, таких как лексер, парсер и т. д. для меня. Это отлично работает. Теперь я хотел бы немного разобраться с этим, так как не нужно вручную компилировать bnfc файл и иметь его генери…
27 апр '16 в 02:45
1 ответ

LBNF, объявление / определение функции C, уменьшите уменьшить конфликт

Я пытаюсь представить в LBNF, что объявления функций C/C++ имеют следующую (приблизительную) форму (<sym> обозначает optionallity, а [rule] является списком с нулевым или большим количеством значений): type ident ( [type <id>] ); В то вр…
05 май '16 в 19:19
1 ответ

Как отключить встроенные правила?

Как я могу отключить все встроенные правила BNFC, как Ident, Integer или пробелы, используемые для разделения токенов? Я нашел их бесполезными и раздражающими, поскольку они мешают анализаторам, которые я пытаюсь написать. Я уже пытался переопредели…
05 дек '13 в 13:08
1 ответ

Сгенерированная BNFC грамматика не работает на простейших примерах

Я хотел бы написать переводчика на haskell для простого императивного языка. Для этого я сначала написал грамматику этого языка для инструмента BNFC ( http://bnfc.digitalgrammars.com/). Часть этой грамматики посвящена арифметическим выражениям, таки…
1 ответ

Почему не удается выполнить синтаксический анализ этой программы с помощью BNFC?

Дана следующая грамматика: comment "/*" "*/" ; TInt. Type1 ::= "int" ; TBool. Type1 ::= "bool" ; coercions Type 1 ; BTrue. BExp ::= "true" ; BFalse. BExp ::= "false" ; EOr. Exp ::= Exp "||" Exp1 ; EAnd. Exp1 ::= Exp1 "&&" Exp2 ; EEq. Exp2 ::…
17 май '15 в 01:50
1 ответ

BNFC-синтаксический анализатор и скобка Mathematica, как синтаксис

Я немного поиграл с Конвертером BNF и попытался перестроить части языка Mathematica. Мой BNF уже имел около 150 строк и работал нормально, пока я не заметил очень простую ошибку. Скобки [] в Mathematica используются для двух разных вещей expr[arg] в…
10 янв '13 в 09:56
2 ответа

Ошибка "Неисчерпывающие шаблоны в случае" при синтаксическом анализе файла BNFC

Я получаю bnfc: src/LexBNF.x:(80,13)-(86,20): Non-exhaustive patterns in case ошибка. Что это значит? На самом деле это не говорит о том, что не так в моей грамматике BNF, и я понятия не имею, как найти ошибку. Я пытался искать его последние несколь…
15 май '15 в 09:55