Вопросы по теме 'parser-combinators'

что не так: значение Parsers не входит в пакет scala.util.parsing.combinator?
У меня есть вышеприведенное странное сообщение об ошибке, которое я не понимаю: «значение Parsers не является членом пакета scala.util.parsing.combinator». Я пытаюсь изучить комбинаторы Parser, шаг за шагом пишу парсер C. Я начал с токена, поэтому...
2415 просмотров
schedule 16.08.2022

Информация о комбинаторах парсера
Я использую комбинаторы синтаксического анализа в scala. Если у меня есть рекурсивный парсер: val uninterestingthings = ".".r val parser = "(?ui)(regexvalue)".r | (uninterestingthings~>parser) Как я могу проверить, сколько символов ввел...
264 просмотров
schedule 16.04.2022

Как передать ParseResults другим методам?
void whatever() { // ... val parser = new MyParser val parse = parser.parse(input) if (parse successful) { semanticAnalysis(parse) } } void semanticAnalysis(parse: DontKnowTheCorrectType) { // ... } Какой тип я должен указать...
549 просмотров

Пошаговая оценка с помощью комбинатора парсеров в scala
Я только изучаю библиотеку комбинаторов парсеров Scala. Я экспериментировал с работающим синтаксическим анализатором, который анализирует некоторые арифметические выражения с помощью абстрактного синтаксического дерева. Поэтому, когда я звоню...
1242 просмотров
schedule 25.02.2023

Создание рекурсивной структуры данных с помощью комбинаторов парсеров в scala
Я новичок в Scala, работаю над S99 , пытаясь изучить Scala. Одна из проблем связана с преобразованием строки в древовидную структуру данных. Я могу сделать это «вручную», я также хочу посмотреть, как это сделать, используя библиотеку комбинатора...
697 просмотров
schedule 20.11.2022

Комбинаторы парсеров — простая грамматика
Я пытаюсь использовать комбинаторы парсеров в Scala для простой грамматики, которую я скопировал из книги. Когда я запускаю следующий код, он останавливается сразу после того, как первый токен был проанализирован с ошибкой [1.3] failure: string...
202 просмотров

Внешний DSL Scala - бесконечный цикл, вызванный альтернативными повторениями
Я пытаюсь создать простой внешний DSL в Scala, который сможет анализировать такие строки, как: value = "john${tom}peter${greg}${sue}meg" Как правило, подстрока в кавычках содержит чередующиеся имена и имена, заключенные между ${ и } ....
164 просмотров
schedule 04.05.2022

библиотеки для внешней оценки DSL в Scala
Какие шаги необходимы для оценки внешнего DSL в scala и какие библиотеки для этого доступны? Покопавшись, я могу создать AST вне классов, используя комбинаторы синтаксического анализатора. Каковы следующие шаги в этом процессе? Я посмотрел на...
477 просмотров
schedule 13.05.2022

Дополнительные части комбинатора парсеров
Я впервые использую комбинаторы парсера scala. У меня есть такая ситуация, когда у меня есть список «типов», и они могут расширять другие типы или нет. Если они это сделают, я просто создам карту между типом и его родительским типом. Если нет, я...
1705 просмотров
schedule 27.09.2022

Парсер, который принимает любую строку в Scala?
Я пишу парсер Scala для следующей грамматики: expr := "<" anyString ">" "<" anyString ">" anyString := // any string Например, "<foo> <bar>" является допустимой строкой, как и "<http://www.example.com/example>...
533 просмотров
schedule 18.03.2022

Сопоставление токенов, несущих значения, с комбинаторами парсера Scala
У меня есть тип токенов, которые я хочу проанализировать с помощью Scala util.parsing.combinator.Parsers . Мой класс токенов выглядит примерно так: abstract class Token () case class T_Semicolon () extends Token {} // represents ;...
186 просмотров
schedule 11.04.2023

Понимание «не» в комбинаторах парсеров
Я написал следующий синтаксический анализатор с целью fail -ing по пробелам: import scala.util.parsing.combinator._ object Foo extends JavaTokenParsers { val wsTest = not(whiteSpace) // uses whitespace inherited from `RegexParsers` }...
228 просмотров
schedule 23.03.2022

Внедрение Total Parsers в Idris на основе статьи на Agda
Я пытаюсь реализовать общие парсеры с Idris на основе этой статьи . Сначала я попытался реализовать более простой тип распознавателя P : Tok : Type Tok = Char mutual data P : Bool -> Type where fail : P False empty : P True...
451 просмотров

Игнорирование префиксов в синтаксическом анализаторе комбинатора JavaToken
Я пытаюсь использовать синтаксический анализатор комбинатора JavaToken для извлечения конкретного совпадения, которое находится в середине большей строки (т.е. игнорировать случайный набор символов префикса). Однако я не могу заставить его работать и...
77 просмотров
schedule 07.05.2024

Как я могу написать более общую (но эффективную) версию takeWhile1 от attoparsec?
Data.Attoparsec.Text экспортирует takeWhile и takeWhile1 : takeWhile :: (Char -> Bool) -> Parser Text Потребляйте ввод, пока предикат возвращает True , и возвращайте потребляемый ввод. Этот парсер не дает сбоев. Он вернет...
167 просмотров
schedule 06.10.2022

Комбинаторы синтаксического анализатора, разделение грамматики и построение AST
Я пишу простой функциональный язык программирования на Scala, используя библиотеку синтаксических анализаторов-комбинаторов. Синтаксис указан здесь: https://github.com/hejfelix/Frase/blob/master/src/main/scala/it/vigtig/lambda/ParserLike.scala...
1391 просмотров

Почему комбинатор парсера не отступает?
Учитывать import util.parsing.combinator._ object TreeParser extends JavaTokenParsers { lazy val expr: Parser[String] = decimalNumber | sum //> expr: => TreeParser.Parser[String]...
1236 просмотров

parsec: парсер выбора строк с полезными сообщениями об ошибках
Пусть будет следующий парсер: parser :: GenParser Char st String parser = choice (fmap (try . string) ["head", "tail", "tales"] <?> "expected one of ['head', 'tail', 'tales']") Когда мы проанализируем искаженный ввод...
800 просмотров
schedule 12.12.2022

Сопоставить и разделить по регулярному выражению с начала строки
Я пытаюсь сделать терминальный парсер (для комбинатора парсеров) с нуля. Мой подход заключается в использовании regexp-match-positions* во входной строке, и если шаблон найден в первой позиции, мы выводим разделенную строку. Это то, что у меня...
257 просмотров

Каковы причины использования комбинаторов парсеров?
Я рассматриваю следующий подход к использованию комбинаторов парсеров в Хаскеле. Автор приводит следующий пример комбинаторов парсеров: windSpeed :: String -> Maybe Int windSpeed windInfo = parseMaybe windSpeedParser windInfo...
289 просмотров
schedule 12.04.2023