Описание тега parslet
Parslet - это библиотека синтаксического анализа Ruby, основанная на PEG (Parsing Expression Grammar).
2
ответа
Как заставить мой атом парсера завершаться внутри правила, включая необязательные пробелы?
Я могу заставить атомы разбираться по отдельности, но когда я их цепью >> парсер не хочет покидать :integer править. Я получаю эту ошибку: Extra input after last repetition at line 1 char 2. `- Expected one of [VALUE, BOOL_OPERATION] at line 1…
23 ноя '14 в 22:29
2
ответа
Альтернативы Parslet Не разбирает всю строку
У меня есть следующие спецификации it "parses a document with only an expression" do puts parser.document.should parse("[b]Hello World[/b]") end it "parses a document with only text" do puts parser.document.should parse(" Hello World") end it "parse…
10 дек '12 в 17:41
1
ответ
Как использовать Parslet со строками, а не ломтиками Parslet
Я начал использовать Parslet для анализа некоторых пользовательских данных. В примерах результирующие проанализированные данные выглядят примерно так: { :custom_string => "data"@6 } И я создал Transform что-то вроде rule(:custom_string => simp…
25 авг '15 в 17:03
2
ответа
В Parslet, как восстановить подстроки из поддерева разобрать?
Я пишу парсер для строк с интерполированными аргументами имя-значение, например: 'This sentence #{x: 2, y: (2 + 5) + 3} has stuff in it.' Значения аргумента - это код, который имеет собственный набор правил разбора. Вот версия моего парсера, упрощен…
16 ноя '15 в 19:41
2
ответа
Поддерево Parslet не стреляет
Возобновить (я сократил следующую длинную историю до простой проблемы) tree = {:properties => [{:a => 'b'}, {:c => 'd'}]} big_tree = {:properties => [{:a => 'b'}, {:c => 'd'}], :moves => [{:a => 'b'}, {:c => 'd'}]} trans =…
12 май '13 в 16:12
1
ответ
Как мне разделить атом в Парслете?
Я строю SQL-подобный язык запросов. Я хотел бы иметь возможность обрабатывать списки элементов, разделенных запятыми. Я успешно достиг этого с этим кодом: class QueryParser < Parslet::Parser rule(:space) { match('\s').repeat(1) } rule(:space?) { …
17 апр '14 в 19:04
1
ответ
Ruby:parslet для парсера системного интерфейса verilog
Я использую Ruby:: Parslet. Я анализирую документ, похожий на интерфейс SV, например: interface my_intf; protocol validonly; transmit [Bool] valid; transmit [Bool] pipeid; transmit [5:0] incr; transmit [Bool] sample; endinterface Вот мой парсер: cla…
01 сен '16 в 21:11
1
ответ
Петрушка двойное отрицание
При разборе кавычек и экранировании (ср. Почему Parslet (в Ruby) возвращает пустой массив при анализе пустого строкового литерала?) Я наткнулся на странность в Parslet: (escape_char.absent? >> str('"')).absent? >> any Кажется, что Парсле…
12 июн '15 в 07:43
2
ответа
Ruby: Как генерировать строки кода внутри программы?
Я разрабатываю синтаксический анализатор в Ruby с использованием библиотеки parslet. Язык, который я анализирую, имеет много ключевых слов, которые можно объединить в одно правило синтаксического анализа, например: rule(:keyword) { str('keyword1') |…
12 дек '14 в 11:19
2
ответа
Парслет Не разбирая всю строку
Для следующего Parslet Parser require 'parslet' require 'parslet/convenience' class Lines < Parslet::Parser rule(:open_tag) {str('[')} rule(:close_tag) {str(']')} rule(:data) {str('name') | str('name_id') } rule(:text) { open_tag >> data &g…
10 май '17 в 11:14
1
ответ
Разбор текста, структурированного как дерево с колонками фиксированной ширины, с использованием parslet в ruby
Я застрял. Уже пару дней пытаюсь разобрать этот текст (смотри внизу). Но не могу понять некоторые вещи. Сначала текст форматируется в древовидной структуре со столбцами фиксированной ширины, но точная ширина столбца зависит от самого широкого поля. …
07 фев '13 в 01:11
1
ответ
Слово петрушка до настоящего момента
Я только начинаю с рубина и петрушки, так что это может быть очевидно для других (надеюсь). Я хочу получить все слова до разделителя (^), не потребляя его Следующее правило работает (но использует разделитель) с результатом {:wrd=>"otherthings"@0…
17 апр '14 в 05:22
1
ответ
Как я могу заставить Парслета сказать персонажу, который не удался?
У меня есть следующее в Parslet. '] at line 1 char 27. | |- Expected "\n", but got "\\" at line 1 char 27. | `- Expected "\r\n", but got "\\n" at line 1 char 27. Я немного сбит с толку, так как в исходной строке нет двух косых черт. Чтобы помочь мне…
26 окт '15 в 09:10
1
ответ
Почему Parslet (в Ruby) возвращает пустой массив при разборе пустого строкового литерала?
Я играю с петрушкой. Это тривиальный парсер, который показывает мне неочевидное поведение. require 'parslet' class Parser < Parslet::Parser rule(:quote) { str('"') } rule(:escape_char) { str('\\') } def quoted(term) quote >> term >> q…
08 сен '14 в 20:22
2
ответа
Parslet: узнавать что угодно, кроме заданного ключевого слова
Я пытаюсь написать парсер Ruby/Parslet для Handlebars, но я застреваю с {{ else }} ключевое слово. Чтобы объяснить брифлт для тех, кто не использует Handlebars, if/else пишется так: {{#if my_condition}} show something {{else}} show something else {{…
04 мар '15 в 10:02
2
ответа
Парсер, чувствительный к отступам, использующий Parslet в Ruby?
Я пытаюсь разобрать простой чувствительный к отступам синтаксис, используя библиотеку Parslet в Ruby. Ниже приведен пример синтаксиса, который я пытаюсь проанализировать: level0child0 level0child1 level1child0 level1child1 level2child0 level1child2 …
12 май '13 в 06:56
2
ответа
Разбор перед сохранением в MVC
Я начинаю с разбора данных и получения некоторой структуры из предоставленных пользователем строк (в основном вытаскивая цифры и названия городов). Я запустил немного кода в интерпретаторе ruby, и теперь я хочу использовать этот же код в веб-приложе…
11 июл '11 в 18:03
2
ответа
Ruby parslet: разбор нескольких строк
Я ищу способ сочетания нескольких строк Parslet. Код выглядит так: rule(:line) { (match('$').absent? >> any).repeat >> match('$') } rule(:lines) { line.repeat } Тем не мение, lines всегда будет в конечном итоге в бесконечном цикле, потом…
18 июл '13 в 17:26
1
ответ
Как мне разобрать текст rtf используя ruby и parslet?
У меня есть следующие данные из файла RTF: {\ rtf1 \ ansi \ deff3 \ adeflang1025 \ n {\ fonttbl {\ f0 \ froman \ fprq2 \ fcharset0 Times New Roman;} {\ f1 \ froman \ fprq2 \ fcharset2 Symbol;} {\ f2 \ fswiss \ fprq2 \ fcharset0 Arial;} {\ f3 \ froma…
19 июл '18 в 20:50
2
ответа
Захват экранированного многострочного синтаксиса с помощью Parslet и Ruby
Я хочу написать парсер с Parslet на Ruby, который понимает несколько простой синтаксис конфигурации: alpha = one beta = two\ three gamma = four С точки зрения синтаксического анализатора, обратная косая черта выходит за пределы новой строки, поэтому…
05 янв '18 в 04:25