Описание тега lpeg
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: захват с разделителями
Я пытаюсь разобрать строку, такую как: &1 first &2 second &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 <- variable / function argument <- variable…
26 июл '13 в 15:42
2
ответа
Сопоставить повторяемую строку как "целое слово" в Lua 5.1
Моя среда: Lua 5.1 Абсолютно нельзя использовать библиотеки с собственным компонентом (например, C .so/.dll). Я могу запустить любой произвольный чистый код Lua 5.1, но не могу получить доступ os и несколько других пакетов, которые позволили бы полу…
04 фев '19 в 04:08