Вопросы по теме 'parser-combinators'
Доступ к данным соответствия регулярному выражению в Scala Parser
Мне интересно, можно ли получить MatchData, сгенерированную из соответствующего регулярного выражения в грамматике ниже.
object DateParser extends JavaTokenParsers {
....
val dateLiteral = """(\d{4}[-/])?(\d\d[-/])?(\d\d)""".r ^^ {...
3746 просмотров
schedule
23.08.2023
Как улучшить сообщения об ошибках в парсерах на основе парсера-комбинатора Scala?
Я написал парсер на основе комбинаторов парсеров Scala:
class SxmlParser extends RegexParsers with ImplicitConversions with PackratParsers {
[...]
lazy val document: PackratParser[AstNodeDocument] =
((procinst | element | comment |...
2279 просмотров
schedule
18.07.2022
Используйте комбинатор парсера Scala для анализа файлов CSV
Я пытаюсь написать парсер CSV с использованием комбинаторов парсера Scala. Грамматика основана на RFC4180 . Я придумал следующий код. Это почти работает, но я не могу правильно разделить разные записи. Что я пропустил?
object CSV extends...
14120 просмотров
schedule
11.02.2022
Грамматика и синтаксический анализатор арифметических выражений
Недавно я искал подходящую грамматику для арифметических выражений, но нашел только тривиальные, например, игнорируя pow(..., ...) . Затем я попробовал это самостоятельно, но иногда это не срабатывало, как ожидалось. Например, я упустил возможность...
3938 просмотров
schedule
03.05.2024
Комбинаторы синтаксического анализатора Scala против синтаксического анализатора, сгенерированного ANTLR / Java?
Я пишу синтаксический анализатор выражений для приложения, написанного в основном на Scala. Я построил объекты AST на Scala, и теперь мне нужно написать парсер. Я слышал о встроенных комбинаторах синтаксического анализатора Scala, а также об ANTLR3,...
5344 просмотров
schedule
13.04.2022
Комбинаторы парсеров Scala, парсеры не работают из-за приоритета
Я пытаюсь написать интерпретатор для языка программирования Icon. Одним из шагов в этом процессе является написание синтаксического анализатора для Icon, который я сделал следующим образом:
import java.io.FileReader
import...
1235 просмотров
schedule
10.04.2023
Список равенств с использованием комбинаторов парсера
Я взял код парсинга CSV Scala отсюда:
Используйте комбинатор анализатора Scala для анализа файлов CSV
А затем я попытался написать для него базовый тест:
assertEquals(List(List()), CSV.parse(""))
И это терпит неудачу с сообщением:...
238 просмотров
schedule
14.03.2023
Существуют ли какие-либо известные библиотеки комбинаторов синтаксических анализаторов в F #, которые могут анализировать двоичные (не текстовые) файлы?
Я знаком с некоторыми основами fparsec, но, похоже, он ориентирован на текстовые файлы или потоки.
Существуют ли какие-либо другие библиотеки F #, которые могут эффективно анализировать двоичные файлы? Или можно легко модифицировать fparsec для...
1520 просмотров
schedule
25.02.2024
Scala. Парсер сложных выражений. OutOfMemoryError
Я хотел бы создать парсер для сложных выражений с порядком операций. У меня есть пример, но он работает очень медленно и выдает исключение OutOfMemoryError. Как я могу это улучшить?
def expr: Parser[Expression] = term5
def term5:...
221 просмотров
schedule
06.05.2022
Разбор строки, содержащей любые символы
Я пытаюсь заставить работать. Итак, у меня есть строки, заключенные в круглые скобки. Строки могут содержать любые символы, и, следовательно, строка, которую я хочу проанализировать, также может содержать круглые скобки. Я думаю, что регулярное...
290 просмотров
schedule
27.11.2023
Scala 2.9: подкласс Parsers не распознает переопределение Elem?
Я написал парсер, который действует как лексер. Этот лексер анализирует файл и возвращает список токенов, каждый из которых является классом case или объектом, расширяющим общий признак.
Сейчас я пытаюсь написать парсер для вывода лексера, но...
143 просмотров
schedule
19.02.2023
Преобразовать фрейм данных в матрицу со счетчиками
У меня есть файлы данных, структурированные следующим образом:
OTU1 PIA0 1120
OTU2 PIA1 2
OTU2 PIA3 6
OTU2 PIA4 10
OTU2 PIA5 1078
OTU2 PIN1 24
OTU2 PIN2 45
OTU2 PIN3 261
OTU2 PIN4 102
OTU3...
1335 просмотров
schedule
28.10.2023
Комбинаторы синтаксического анализатора: обработка пробелов в синтаксическом анализаторе без чрезмерного возврата
Я перехожу от отдельного лексера и синтаксического анализатора к комбинированному синтаксическому анализатору, который работает с массивом символов. Одна проблема заключается в том, как правильно обрабатывать пробелы.
Проблема
Возьмем язык,...
713 просмотров
schedule
02.05.2022
Как пропустить пробелы, но использовать их как разделитель токенов в комбинаторе парсера
Я пытаюсь создать небольшой синтаксический анализатор, в котором токены (к счастью) никогда не содержат пробелов. Пробелы (пробелы, табуляции и символы новой строки) по сути являются разделителями токенов (за исключением случаев, когда есть скобки и...
1983 просмотров
schedule
25.07.2023
Есть ли способ передать контекстную информацию парсерам?
Я анализирую небольшой декларативный язык, в котором в области действия вы можете объявлять переменные (с типом), а затем позже, как и в большинстве других языков, используется имя (без типа).
Объявление переменной будет выглядеть так:...
291 просмотров
schedule
22.01.2023
Добавление номеров строк к ошибкам синтаксического анализа без непосредственного расширения Positional
Я (наконец) завершил синтаксический анализатор, который обрабатывает мой DSL и переводит его в объекты моего домена. Теперь я хочу добавить правильную обработку ошибок и добавить номера строк к ошибкам, о которых сообщает синтаксический анализатор....
119 просмотров
schedule
13.02.2022
Полиморфизм с унаследованными дженериками приводит к плохому доступу в swift
У меня есть два класса, которые наследуются от общего класса.
class Parser<I: CollectionType, T> {
func parse(ts: I) -> [(T, I)] { return [] }
func parse_all(ts: I) -> [(T, I)] {
return parse(ts).filter { isEmpty($0.1)...
529 просмотров
schedule
23.11.2022
Комбинатор Scala Parser Replace Patterns
У меня есть программа ниже, я могу проанализировать шаблон, например convert(a.ACCOUNT_ID, string) , на выражение, но я хочу заменить этот шаблон на CAST(a.ACCOUNT_ID AS VARCHAR) . Я могу проанализировать полученное выражение и заменить строки...
287 просмотров
schedule
04.04.2022
Сопоставление выражений шаблонных фильтров с nom
Я работаю над механизмом создания шаблонов, синтаксис которого может быть таким:
{{ somevar|filter }}
Вместо somevar может быть произвольное «выражение», то есть либо имя переменной, например somevar , либо вложенное выражение фильтра...
506 просмотров
schedule
06.03.2022
Как правильно вернуть простую настраиваемую ошибку с помощью nom errorkind?
В nom добавлен простой обработчик ошибок.
Первый компилируется без ошибок, второй с ошибками
use nom::*;
use std::str;
// This works
named!(
field<&str>,
map!(
complete!(add_return_error!(...
1311 просмотров
schedule
06.06.2024