LevT:
Нужна помощь умельцев,
то ли по регуляркам, то ли по виндовым кодировкам
Тестирую грамматику, [more=такую]
/**
* S-expression parser.
*
* Atom: 42, foo, bar, "Hello world"
*
* List: (), (+ 5 x), (print "hello")
*/
// ---------------------------------------------
// Lexical grammar (tokens):
%lex
%%
\s+ /* skip whitespace */
\"[^\"]*\" return 'STRING'
\d+ return 'NUMBER'
[\W\-+*=<>/]+ return 'SYMBOL'
/lex
// ---------------------------------------------
// Syntactic grammar (BNF):
%%
Exp
: Atom
| List
;
Atom
: NUMBER
| STRING
| SYMBOL
;
[/more]
Использую некий JS инструмент, который берёт такой исходник, разбирает и тестирует на соотвествие BNF грамматике, может и выдать код парсера на целевом языке программирования.
Под линуксом инструмент этот точно рабочий, автор инструмента демонстрирует работу на экране.
В винде из токенайзера под [?] работает всё,
кроме ловли STRING по регулярке "строка это нечто в двойных кавычках"
Ошибка выглядит так
Цитата:
Нужна помощь умельцев,
то ли по регуляркам, то ли по виндовым кодировкам
Тестирую грамматику, [more=такую]
/**
* S-expression parser.
*
* Atom: 42, foo, bar, "Hello world"
*
* List: (), (+ 5 x), (print "hello")
*/
// ---------------------------------------------
// Lexical grammar (tokens):
%lex
%%
\s+ /* skip whitespace */
\"[^\"]*\" return 'STRING'
\d+ return 'NUMBER'
[\W\-+*=<>/]+ return 'SYMBOL'
/lex
// ---------------------------------------------
// Syntactic grammar (BNF):
%%
Exp
: Atom
| List
;
Atom
: NUMBER
| STRING
| SYMBOL
;
[/more]
Использую некий JS инструмент, который берёт такой исходник, разбирает и тестирует на соотвествие BNF грамматике, может и выдать код парсера на целевом языке программирования.
Под линуксом инструмент этот точно рабочий, автор инструмента демонстрирует работу на экране.
В винде из токенайзера под [?] работает всё,
кроме ловли STRING по регулярке "строка это нечто в двойных кавычках"
Ошибка выглядит так
Цитата:
SyntaxError: hello ^ Unexpected token: "h" at 1:0. |