LPeg - это библиотека сопоставления с образцом для Lua, основанная на грамматиках синтаксического анализа (PEG).
0 ответов

LPEG - ошибка "Правило может быть леворекурсивной", несмотря на то, что это грамматика, которую можно прекратить

Я пытаюсь использовать LPEG для создания препроцессора для GLSL. Мне удалось заставить работать операторы #define и #undef без проблем, но мои проблемы возникают, когда я пытаюсь работать с операторами #ifdef. Я думал, что смогу создать правило, кот…
21 апр '18 в 13:33
2 ответа

Нечувствительное к регистру совпадение в LPeg.re (Lua)

Я новичок в модулях "LPeg" и "re" Lua, в настоящее время я хочу написать шаблон, основанный на следующих правилах: Соответствует строке, начинающейся с "gv_$/gv$/v$/v_$/x$/xv$/dba_/all_/cdb_", и префикса "SYS.% S *" или "PUBLIC.% S *" необязательно …
14 июн '16 в 13:57
2 ответа

Как эффективно сопоставить ключи в таблице в Lua?

Очевидно, что в моей среде Lua 5.1 доступно сопоставление с шаблоном Lua по умолчанию, а также относительно недавние версии PCRE и LPEG. Мне, честно говоря, все равно, какой из них используется; пока моя проблема решена эффективно, я счастлив. (Мои …
19 янв '17 в 15:07
1 ответ

Как я могу сигнализировать об ошибках синтаксического анализа с LPeg?

Я пишу парсер на основе LPeg. Как сделать так, чтобы ошибка синтаксического анализа возвращалась nil, errmsg? Я знаю, что могу использовать error(), но насколько я знаю, это создает нормальную ошибку, а не nil, errmsg, Код довольно длинный, но важна…
29 июл '16 в 17:55
1 ответ

LPeg грамматика странность

Частью моего приложения на Lua является панель поиска, и я пытаюсь понять, что это логические выражения. Я использую LPeg, но текущая грамматика дает странный результат: > re, yajl = require're', require'yajl' > querypattern = re.compile[=[ QU…
13 янв '12 в 01:38
2 ответа

Изменение порядка возврата захватов в шаблоне LPeg?

(Я использую Lua 5.2 и LPeg 0.12) Предположим, у меня есть образец P это производит некоторое неопределенное количество захватов, если таковые имеются, и я хочу написать создать шаблон Q что захватывает P а также положение после P - но эта позиция д…
30 июн '15 в 08:06
1 ответ

Разбор XML-файла с помощью модуля LPeg.

Я пытаюсь выучить LPeg's re module и это был довольно интересный опыт, тем более что официальная документация так хороша. Однако есть некоторые темы, которые, кажется, там плохо объяснены. Например, named group capture строительство: {:name: p :}, Р…
29 май '15 в 20:24
3 ответа

Как заставить LPeg.match вернуть ноль

В настоящее время я знакомлюсь с модулем парсера LPeg. Для этого я хочу соответствовать строке версии (например, 11.4) против списка. Такой список представляет собой строку с жестким синтаксисом, которая также может содержать диапазоны. Вот EBNF-под…
13 сен '13 в 19:07
2 ответа

Установка moonscript через luarocks на Windows 8

Когда я пытаюсь установить moonscript через luarocks, процесс выдает ошибку при установке зависимостей для moonscript, говоря, что cl не является установленной / распознанной программой. C:\Users\Kingdaro>luarocks install moonscript Installing ht…
08 янв '14 в 01:22
0 ответов

Использование LPEG (грамматики выражений Lua Parser), например boost::spirit

Так что я играю с lpeg, чтобы заменить грамматику Boost Spirit, я должен сказать, что Boost:: Spirit намного элегантнее и естественнее, чем Lpeg. Однако работать с этим из-за ограничений современной технологии компилятора C++ и проблем TMP в C++ дов…
01 ноя '11 в 15:20
1 ответ

Как использовать / включить модуль lpeg luapeg re

ATM Я пытаюсь выполнить файлы lua из моего приложения, это работает с основными lua. Я использую компилятор Borland (строитель 3, просто не спрашивайте>.<) Сейчас я пытаюсь использовать lpeg через модуль re. Я добавил каталог lpeg в переменную окруж…
23 авг '13 в 08:38
1 ответ

Как правильно смотреть в будущее с LPeg

Чтобы соответствовать строке, начинающейся с dog, с последующим cat(но не потребляющий cat), это работает: local lpeg = require 'lpeg' local str1 = 'dogcat' local patt1 = lpeg.C(lpeg.P('dog')) * #lpeg.P('cat') print(lpeg.match(patt1, str1)) Выход: d…
19 ноя '14 в 05:10
1 ответ

Как точно сопоставить n повторений шаблона в Lua?

Я пишу грамматику, которая включает в себя ровно три буквенных символа. Вот мой код: local l = require "lpeg" l.locale(l) local date = l.digit^1 * l.P'/' * l.digit^1 * l.P'/' * l.digit^1 local time = l.digit^1 * l.P':' * l.digit^1 * l.P':' * l.digit…
23 апр '15 в 20:08
1 ответ

Соответствие пунктуации Юникода с использованием LPeg

Я пытаюсь создать шаблон LPeg, который бы соответствовал любой пунктуации Unicode внутри кодированного ввода UTF-8. Я придумал следующий брак Селены Юникод и LPeg: local unicode = require("unicode") local lpeg = require("lpeg") local punctuation = l…
17 авг '16 в 21:44
1 ответ

Шаблон LPeg, который соответствует строкам без последовательных переносов

Я пытаюсь написать шаблон LPeg для соответствия строк, которые: начать с буквы после этого содержат буквенно-цифровые символы не содержит двух или более последовательных дефисов (например, запрещает test--string) Для справки, регулярное выражение [a…
22 окт '16 в 08:31
2 ответа

Сопоставление с образцом lua: захват с разделителями

Я пытаюсь разобрать строку, такую ​​как: &amp;1 first &amp;2 second &amp;4 fourth \\и из него построить стол t = {1=first, 2=second, 4=fourth} Я не очень разбираюсь в регулярных выражениях в целом, поэтому моя наивная попытка (без учета \\ и части с…
13 июн '13 в 20:57
1 ответ

Нужна помощь, чтобы понять LPeg и PEGs

Следующий шаблон (с этой страницы) сопоставляет только строки со сбалансированными скобками: b = lpeg.P{ "(" * ((1 - lpeg.S"()") + lpeg.V(1))^0 * ")" } Что значит 1- в 1 - lpeg.S"()" имею в виду? function gsub (s, patt, repl) patt = lpeg.P(patt) pat…
18 окт '13 в 21:44
1 ответ

Разбор языка, похожего на TeX, с помощью lpeg

Я изо всех сил пытаюсь получить голову вокруг LPEG. Мне удалось создать одну грамматику, которая делает то, что я хочу, но я бился головой об этом и не ушел далеко. Идея состоит в том, чтобы разобрать документ, который является упрощенной формой TeX…
07 фев '14 в 08:01
2 ответа

lpeg разобрать логический термин первого порядка

Как видно из названия, я пытаюсь разобрать например term(A, b, c(d, "e", 7)) в таблице Lua, как {term, {A, b, {c, {d, "e", 7}}}} Это грамматика, которую я построил: local pattern = re.compile[=[ term &lt;- variable / function argument &lt;- variable…
26 июл '13 в 15:42
2 ответа

Сопоставить повторяемую строку как "целое слово" в Lua 5.1

Моя среда: Lua 5.1 Абсолютно нельзя использовать библиотеки с собственным компонентом (например, C .so/.dll). Я могу запустить любой произвольный чистый код Lua 5.1, но не могу получить доступ os и несколько других пакетов, которые позволили бы полу…
04 фев '19 в 04:08