Описание тега ocamlyacc
NoneOcamlyacc - генератор парсеров для OCaml (в основном устарел Menhir)
1
ответ
Приоритет и ассоциативность приложения функции OCaml
Мне нужно дать высокий приоритет и оставить ассоциативность для функции приложения в моем анализаторе OCaml. У меня есть куча разных токенов, для которых он подходит, например: %token LET REC EQ IN FUN ARROW %token IF THEN ELSE %token PLUS MINUS MUL…
16 фев '16 в 00:49
1
ответ
Ошибка типа при оснащении Менгира абстрактным синтаксическим деревом
РЕДАКТИРОВАТЬ: Мой следующий вопрос все еще остается в силе, но я ценю, что трудно ответить, не просматривая кучу кода. Поэтому, чтобы задать несколько похожий вопрос, есть ли у кого-нибудь примеры использования Менгира для реализации АСТ? Желательн…
20 мар '17 в 15:57
1
ответ
Таблица 2 направлений (строка <-> токен) в разборе
Я определил хеш-таблицу keyword_table хранить все ключевые слова моего языка. Вот часть кода: (* parser.mly *) %token CALL CASE CLOSE CONST ... reserved_identifier: | CALL { "Call" } | CASE { "Case" } | CLOSE { "Close" } | CONST { "Const" } ... (* l…
15 окт '13 в 21:54
1
ответ
Расширить ocamllex для большей лексики
Есть ли способ заставить ocammlex работать с большим количеством ключевых слов? Я написал интерпретатор и парсер для немецкого языка, который "компилирует" немецкий текст в латексные картинки для анализа языка. это работает очень хорошо и действител…
15 июл '14 в 13:10
2
ответа
Сделайте таблицу, содержащую токены, видимой для обоих.mly и.mll
Я хотел бы определить keyword_table который сопоставляет некоторые строки с некоторыми токенами, и я хотел бы сделать эту таблицу видимой для обоих parser.mly а также lexer.mll, Кажется, что таблица должна быть определена в parser.mly, %{ open Utili…
31 янв '14 в 21:44
2
ответа
Конфликт при разборе набора выражений
Я хотел бы разобрать набор выражений: R[3]C, R[2]C, R[3]C-R[2]C... Есть конфликт, который я не могу решить... Вот часть lexer.mll: rule token = parse | 'R' { R } | 'C' { C } | "RC" { RC } | ['0'-'9']+ as lxm { INTEGER (int_of_string lxm) } | '+' { P…
23 июл '13 в 21:54
2
ответа
Внешние определения регулярных выражений ocamllex
Я реализовал обычную комбинацию lexer/parser/pretty-printer для чтения / печати типа в моем коде. Я нахожу избыточность среди лексера и симпатичного принтера, когда речь идет о регулярных выражениях в виде простых строк, обычно используемых для симв…
03 авг '12 в 12:04
1
ответ
Вернуть несколько токенов в ocamllex
Есть ли способ вернуть несколько токенов в OCamlLex? Я пытаюсь написать лексер и парсер для языка на основе отступов, и я бы хотел, чтобы мой лексер возвращал несколько DEDENT токены, когда он замечает, что уровень отступа меньше, чем был раньше. Эт…
09 авг '10 в 06:42
2
ответа
Использование ocamllex/ocamlyacc для разбора части грамматики
Я использовал регулярные выражения, чтобы просмотреть кучу файлов Verilog и вытащить определенные утверждения. В настоящее время регулярные выражения подходят для этого, однако я начинаю приближаться к тому моменту, когда понадобится настоящий синта…
21 авг '12 в 19:56
1
ответ
Разобрать два вида утверждений с приоритетом
Я хотел бы разобрать оба f(arg).method а также f(arg) как block_statement; первый имеет больший приоритет, чем последний. Следующие элементы в parser.mly не могу разобрать f(arg), но могу разобрать f(arg).method следующее: (* f(arg).method *) BS_MAE…
24 янв '14 в 17:35
2
ответа
Интерпретатор OCaml: оцените функцию внутри функции
Я пытаюсь написать переводчик в OCaml и у меня проблема здесь. В моей программе я хочу вызвать такую функцию, например: print (get_line 4) // print: print to stdout, get_line: get a specific line in a file Как я могу это сделать? Я думаю, что проб…
19 мар '14 в 10:06
1
ответ
Код парсера OCaml
Мой код: Term : ... | VAR { try Hashtbl.find var_table $1 with Not_found -> printf "no such variable '%s'\n" $1; 0.0 } /*(Line:75)*/ ... и когда я запустил его, под ocamlc -c parser.ml Я вижу: Error: This expression has type float but an expressi…
06 янв '13 в 21:38
2
ответа
Встраивание предметно-ориентированного языка в OCaml верхнего уровня - в Camlp4 или нет?
У меня есть код, который включает в себя menhirсинтаксический анализатор для предметно- ориентированного языка (логика). Ради здравого смысла во время отладки, было бы здорово иметь возможность печатать экземпляры этого языка (формулы) непосредствен…
15 июл '12 в 15:40
1
ответ
Что означает:: (двойное двоеточие) в Ocaml
formal_list: тип ID { [($1,$2)] } | formal_list Идентификатор типа COMMA { ($3,$4):: $1 } как это то, что означает это:: Как a:: b это означает, что добавить a к b
28 окт '16 в 20:04
3
ответа
Поток парсера ocamlyacc из явного списка токенов?
Можно ли передать сгенерированному OCamlYacc синтаксическому анализатору явный список токенов для анализа? Я хотел бы использовать OCamlLex для явного генерирования списка токенов, который я затем анализирую с использованием парсера, сгенерированног…
05 июн '12 в 14:49
3
ответа
На ocamlyacc, функция приложения грамматика и приоритет
Я новичок OCaml, и я пытаюсь написать простую грамматику, похожую на OCaml, и я не могу понять это. Моя грамматика позволяет что-то вроде этого: let sub = fun x -> fun y -> x - y;; Однако, если я хочу использовать функцию, определенную таким о…
17 май '10 в 07:53
2
ответа
Оператор:: OCaml
Я новичок в OCaml и пытаюсь создать парсер, я хочу иметь список, в котором хранятся все методы моего класса. Это одна часть, которая у меня есть в моем файле.mly. init_method_list: { [] } | method_list method_decl { List.rev($1) } ; method_list: met…
11 сен '15 в 11:36
1
ответ
Menhir разделенный_nonempty_list генерирует код с ошибкой типа
У меня есть простое рекурсивное правило: i_stmt: | CHAIN LPAREN c=separated_nonempty_list(i_stmt, COMMA) RPAREN {Chain c} | ASSIGN LPAREN n=i_var COMMA e=i_expr RPAREN {Assign (n,e)} | CRETURN LPAREN i=i_expr RPAREN { Return i } ; Он скомпилирован н…
19 май '17 в 01:29
1
ответ
Токен Ocamlyacc не виден при выполнении семантического действия
Я использую ocamlyacc для небольшого парсера, который также выполняет некоторые семантические действия для большинства правил синтаксического анализа. Я определил набор токенов в начале: %token T_plus %token T_minus %token <int> T_int_const %l…
29 июл '15 в 11:24
2
ответа
OCaml типы не совместимы - OCamlyacc
funcexpr: /* This is a function: arguments -> string list */ LPAREN HEAD arguments RPAREN { let head a = [List.hd (List.hd a)] in head << $3 } | LPAREN REAR arguments RPAREN { let rear b = List.tl (List.hd b) in rear << $3 } | LPAREN…
28 фев '15 в 18:18