1
голосов
1ответов
759 просмотров

Допуск неверных операторов с помощью ANTLR (например, для завершения кода)

У меня есть грамматика ANTLR для простого DSL, и все работает без сбоев при отсутствии синтаксических ошибок. Однако теперь мне нужно поддерживать механизм автозаполнения, при котором мне нужно получать возможные дополнения из моих древовидных грамматик, выполняющих базовую проверку типов атрибу...

15
голосов
12ответов
4067 просмотров

Почему во многих языках программирования тип * после * имени переменной?

Я только что наткнулся на этот вопрос в FAQ по Go, и он напомнил мне кое-что, чтонекоторое время беспокоил меня.К сожалению, я не совсем понимаю, в чем заключается ответ. Кажется, что почти каждый язык, не похожий на C, помещает тип после имени переменной, например: var : int Просто ...

3
голосов
2ответов
3580 просмотров

Левая рекурсия в грамматике приводит к конфликтам

На протяжении всей грамматики Bison я использую правую рекурсию, и я читал, что левая рекурсия лучше, потому что ей не нужно сначала создавать весь стек. Однако, когда я пытаюсь переключиться на левую рекурсию на любом из них, у меня всегда возникает множество конфликтов, и я не понимаю почем...

3
голосов
6ответов
1845 просмотров

Regex для исключения 101 и 110

Что такое регулярное выражение, которое принимает все на языке {0,1}, но не имеет подстроки 110 или 101? Принять: 111111 000011111 100001000001001 010 1 Отклонить: 100110 010100 123 Изменить. Согласно комментариям к ответам ниже, этот вопрос требует формального р...

4
голосов
4ответов
1839 просмотров

Что случилось с этой грамматикой?

grammar Test; IDHEAD: ('a'..'z' | 'A'..'Z' | '_'); IDTAIL: (IDHEAD | '0'..'9'); ID: (IDHEAD IDTAIL*); fragment TYPE: ('text' | 'number' | 'bool'); define: 'define' ID 'as' TYPE; Проблема в том, что правило define соответствует токенам define, ID, as, но не соответствует TYPE. Я получ...

3
голосов
3ответов
353 просмотров

Повышение духа и проблемы с предварительными декларациями

Не мог бы кто-нибудь дать мне несколько советов / идей о том, как поступать в ситуациях, когда необходимо взглянуть на дальнейшие объявления, чтобы иметь возможность выполнять правильные семантические действия в текущий момент? Например, это хорошо известный случай, когда кто-то пишет интерпрета...

1
голосов
2ответов
1233 просмотров

Как определить ПЕРВЫЙ набор Е в этой грамматике?

Интересно, как определить FIRST набор E с помощью грамматики: E -> XYE | e X -> x Y -> y Кто-нибудь может дать мне какое-нибудь направление?

5
голосов
3ответов
560 просмотров

Есть ли у Ruby аддон, похожий на грамматики Perl 6?

Perl был одним из моих любимых инструментов языка программирования на протяжении многих лет. Грамматики Perl 6 выглядят как отличная языковая функция. Я хотел бы знать, не начинал ли кто-нибудь что-то подобное для Ruby.

4
голосов
1ответов
2674 просмотров

Левая рекурсия исключения для E: = EE + | EE- | id

Как устранить левую рекурсию для следующей грамматики? E := EE+|EE-|id Используя обычную процедуру: A := Aa|b переводится как: A := b|A' A' := ϵ| Aa Применяя это к исходной грамматике, мы получаем: A = E, a = (E+|E-) and b = id Следовательно: E := id|E' E' := ϵ|E(...

11
голосов
3ответов
9209 просмотров

Parsing grammars using OCaml

I have a task to write a (toy) parser for a (toy) grammar using OCaml and not sure how to start (and proceed with) this problem. Here's a sample Awk grammar: type ('nonterm, 'term) symbol = N of 'nonterm | T of 'term;; type awksub_nonterminals = Expr | Term | Lvalue | Incrop | Binop | Num;; l...

27
голосов
4ответов
2678 просмотров

Where can I find C# 3.0 grammar?

I'm planning to write a C# 3.0 compiler in C#. Where can I get the grammar for parser generation? Preferably one that works with ANTLR v3 without modification.

5
голосов
1ответов
1298 просмотров

Where is the TextMate Language Parser?

Does anyone know where the code TextMate uses for syntax highlighting is burried? If not, do you know how they parse their language syntaxes, or how you would parse their language syntaxes? That would be awesome to look into. Thanks! Lance

0
голосов
1ответов
151 просмотров

Grammar definition needed for problem statement

Hi I have this grammar for now, but when I have after a service, a note. Antlr doesn't want to recognize that it's not the service, but note. And service and note have different structure. How to write this? I'm trying to parse this. but NOTE bla bla; is in service 777014322;O2 Optimum Profi ...

3
голосов
3ответов
7910 просмотров

ANTLR Grammar for expressions

I'm trying to implement a expression handling grammar (that deals with nested parenthesis and stuff). I have the following so far, but they can't deal with some cases (successful/failure cases appear after the following code block). Anyone know what's going on? Note: The varname += and varname =...

4
голосов
1ответов
432 просмотров

Parser/Lexer ignoring incomplete grammar rules

I have a parser and lexer written in ocamlyacc and ocamllex. If the file to parse ends prematurely, as in I forget a semicolon at the end of a line, the application doesn't raise a syntax error. I realize it's because I'm raising and catching EOF and that is making the lexer ignore the unfinished...

13
голосов
4ответов
411 просмотров

Why can't I assign @b || @c to @a in Perl?

I'd like to perform some convoluted variation of the @a = @b || @c assignment, with the intent of taking @b if non-empty (hence true in a boolean sense), @c otherwise. The documentation explicitely tells me I can't. (And it's right about the fact, too!) The "||", "//" and "&&" opera...

0
голосов
4ответов
2022 просмотров

Accepting a grammar in C++

This is a lab assignment I am stuck on. I need to accept this grammar (ab)*b, which basically means any number of "ab" and ending with b. I have written this code but somehow, it checks only the first 2 letters. #include <iostream.h> #include <conio.h> #include <string.h> e...

4
голосов
2ответов
238 просмотров

What program(s) generate grammar graphs?

I see grammar graphs on the websites for SQLite and JSON. What program can be used to generate these pretty pictures?

6
голосов
1ответов
641 просмотров

CLI grammar checker for determining tense

I like to use the present tense in my Git logs (for example, "Add feature" instead of "Added feature"). Currently, I have an extremely naive Git hook that aborts the commit if the first word of the log message ends in 'ed', but I'd like a more robust solution (where 'more robust' means 'not tota...

8
голосов
3ответов
1502 просмотров

How can I construct a clean, Python like grammar in ANTLR?

G'day! How can I construct a simple ANTLR grammar handling multi-line expressions without the need for either semicolons or backslashes? I'm trying to write a simple DSLs for expressions: # sh style comments ThisValue = 1 ThatValue = ThisValue * 2 ThisOtherValue = (1 + 2 + ThisValue * ThatVal...

13
голосов
4ответов
14408 просмотров

Open Source Grammar Checker

For an online project I'm working on, I am looking for a open source grammar checker. I have searched Google, with some good results (http://www.link.cs.cmu.edu/link/, etc), but I am wondering what all of you think about this topic. I need this to be able to be used online, versus desktop based...

77
голосов
1ответов
25576 просмотров

Разница между парсером LL и рекурсивным спуском?

Я недавно пытался научить себя, как работают парсеры (для языков / контекстно-свободных грамматик), и большая часть из них, кажется, имеет смысл, за исключением одного момента. Я сосредотачиваю свое внимание, в частности, на грамматиках LL (k) , для которых двумя основными алгоритмами являются ...

3
голосов
4ответов
2158 просмотров

Сгенерируйте парсер Fortran 77 из грамматики yacc с помощью Happy (Haskell)

Я наткнулся на следующую грамматику yacc F77: http://yaxx.cvs.sourceforge.net/viewvc/yaxx/yaxx/fortran/fortran.y?revision=1.3&view=markup . Как мне сделать парсер Fortran 77 из этого файла, используя Happy ? Зачем нужен C? / C ++? код в этом файле .y? ОБНОВЛЕНИЕ: Спасибо за ваши...

4
голосов
6ответов
13194 просмотров

Как я могу построить грамматику, которая порождает этот язык?

Я готовлюсь к тесту по конечным автоматам и грамматике, и у меня возник вопрос: Construct a grammar that generates L: L = {a^n b^m c^m+n|n>=0, m>=0} Я считаю, что мои постановки должны соответствовать следующему: S->aA | aB B->bB | bC C->cC | c Here's where I...

-1
голосов
1ответов
903 просмотров

javacc parseException ... проблема упреждения?

Я пишу парсер для очень простой грамматики на javacc. Все начинает складываться, но на данный момент я полностью застрял на этой ошибке: ParseException: Encountered "" at line 4, column 15. Was expecting one of: Рассматриваемая строка ввода - z = y + z + 5 и производство, которое в...

1
голосов
3ответов
1576 просмотров

ANTLR: Грамматический тест для необязательного параметра (с использованием оператора?)

У меня есть грамматика ANTLR, и я определяю функцию на своем языке, которая допускает необязательный параметр. Как я могу проверить, передан ли необязательный параметр в блок генерации кода? Я в основном ищу синтаксис, чтобы сделать что-то вроде этого гипотетического оператора грамматики дере...

3
голосов
3ответов
604 просмотров

Составьте предложение из грамматики с заданным количеством терминалов

Допустим, у вас есть игрушечная грамматика, например: (обновлено, чтобы результат выглядел более естественно) S -> ${NP} ${VP} | ${S} and ${S} | ${S}, after which ${S} NP -> the ${N} | the ${A} ${N} | the ${A} ${A} ${N} VP -> ${V} ${NP} N -> dog | fish | bird | wizard V -&gt...

7
голосов
7ответов
1706 просмотров

Почему грамматика SQL вывернута наизнанку?

Практически в любом формально структурированном наборе информации вы начинаете читать либо от начала к концу, либо иногда от конца к началу (например, почтовые адреса). Но в SQL, особенно запросах SELECT, по порядку чтобы правильно понять его значение, вам нужно начать с середины, с предложения ...

2
голосов
2ответов
7583 просмотров

Как разрешить конфликт сдвига-сокращения в однозначной грамматике

Я пытаюсь разобрать простую грамматику с помощью генератора синтаксического анализа LALR (1) (Bison, но проблема не является специфической для этого инструмента), и у меня возникает конфликт сдвига-уменьшения. В документации и других источниках, которые я нашел об их исправлении, обычно говоритс...

8
голосов
6ответов
856 просмотров

Составные грамматики

Существует так много языков программирования, которые поддерживают включение мини-языков. PHP встроен в HTML. XML может быть встроен в JavaScript. Linq может быть встроен в C #. Регулярные выражения могут быть встроены в Perl. // JavaScript example var a = <node><child/></node&...