parser-combinators

    0

    1答えて

    私はscala.util.parsing.combinatorを使ってパーサと文法を書いています。 私の入力は":za >= 1 alok && :ft == 9" case class Expression(op1:Operand,operator:Operator,op2:Operand) def word: Parser[String] = """[a-z\\\s]+""".r ^^ {

    0

    1答えて

    私はスカラー言語とそのパーサーコンビネータを初めて使用しています。私は仕事に取り組んでいたし、要件に捕まってしまった: 私の要件はType などのために、繰り返し取得することです:私は(文字列を意味する)論理演算子と単語のためのパーサを作成し def logicalOperator:Parser[Operator] = "(&&|\\|\\|)".r ^^ {case op => Operator

    0

    1答えて

    は、私はこのようなパーサを持っていると言うオプション解析: trait PT {} trait StatementPT extends PT{} ... class LoopConditionPT(val operation: String, val variable: IdentPT, val condition: Option[(String,ExpressionPT)]) ext

    0

    1答えて

    LOLCODEスクリプトをScalaパーサーコンビネータを使用して解析します。ここで私はこれまでで得たものである: class ValuePT(val value: String) extends ExpressionPT { override def toString = value } def value: Parser[ValuePT] = (numericL

    1

    1答えて

    parsec-layoutを使用して、ハスケルのような構文で小さな言語を解析しようとしています。あまりにも互いに相互作用していないようだ二つの重要な機能は次のとおりです。FとEは用語がある場合 機能アプリケーションの構文は、すなわち、並置され、F EはEに適用Fための構文です。インデントは、次の2つ、つまり、ネストを示すために使用することができます は等価です。 X = case Y of

    2

    1答えて

    私は以下のように単純なパーサを作成しようとしています。しかし、なぜ '日付'形式があるときに 'floatingPointNumber'を認識しないとコンビネータパーサが不平を言っているのか分かりません。それは 'ident'であることを認識します 以下はエラーのあるコードです。 多くのご協力ありがとうございます! import scala.util.parsing.combinator.Java

    0

    1答えて

    私はパーサーコンビネータについてのチュートリアルを読んでいて、理解しようとすると少し助けてくれる関数を見つけました。 let while_parser = string "while" 、その後、私は文字列は、たとえば言う解析するためにそれを使用: satisfy :: (Char -> Bool) -> Parser Char satisfy p = item `bind` \c ->

    2

    1答えて

    SQLのように、大文字と小文字を区別しないキーワード(および/または識別子)を持つ言語もあります。 TokenParsersを使用している場合、このケースをどのように扱うことができますか? 1つの選択肢はすべての可能な組み合わせのキーワードを生成することですが、多くのキーワードがある場合(これはどういうわけかスタックオーバーフローが発生してwhitespaceになりました!)、いずれの場合でも識別

    1

    1答えて

    私は自分自身のパーサーコンビネータライブラリをHaskellに書こうとしています。識別子の解析方法には苦労しています。 私はASTの一部となる次のように定義されたデータ型を持っています。 data Expr = Var String | .... deriving (Show) この式の目的は、変数の名前を解析することです。パーサは次のように定義されています: identifiers :: P

    2

    1答えて

    私は、算術式のパーサを持っている: object FormulaParser extends JavaTokenParsers { def apply(input: String) = parseAll(formula, input) // ... val formula: Parser[Formula] = comparison | comparable