Вопросы по теме '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 просмотров
schedule
21.04.2023
Пошаговая оценка с помощью комбинатора парсеров в scala
Я только изучаю библиотеку комбинаторов парсеров Scala. Я экспериментировал с работающим синтаксическим анализатором, который анализирует некоторые арифметические выражения с помощью абстрактного синтаксического дерева. Поэтому, когда я звоню...
1242 просмотров
schedule
25.02.2023
Создание рекурсивной структуры данных с помощью комбинаторов парсеров в scala
Я новичок в Scala, работаю над S99 , пытаясь изучить Scala. Одна из проблем связана с преобразованием строки в древовидную структуру данных. Я могу сделать это «вручную», я также хочу посмотреть, как это сделать, используя библиотеку комбинатора...
697 просмотров
schedule
20.11.2022
Комбинаторы парсеров — простая грамматика
Я пытаюсь использовать комбинаторы парсеров в Scala для простой грамматики, которую я скопировал из книги. Когда я запускаю следующий код, он останавливается сразу после того, как первый токен был проанализирован с ошибкой
[1.3] failure: string...
202 просмотров
schedule
25.02.2022
Внешний 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 просмотров
schedule
05.09.2022
Игнорирование префиксов в синтаксическом анализаторе комбинатора 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 просмотров
schedule
11.11.2022
Почему комбинатор парсера не отступает?
Учитывать
import util.parsing.combinator._
object TreeParser extends JavaTokenParsers {
lazy val expr: Parser[String] = decimalNumber | sum
//> expr: => TreeParser.Parser[String]...
1236 просмотров
schedule
31.07.2023
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 просмотров
schedule
27.07.2022
Каковы причины использования комбинаторов парсеров?
Я рассматриваю следующий подход к использованию комбинаторов парсеров в Хаскеле. Автор приводит следующий пример комбинаторов парсеров:
windSpeed :: String -> Maybe Int
windSpeed windInfo =
parseMaybe windSpeedParser windInfo...
289 просмотров
schedule
12.04.2023