parser-combinators

    5

    1答えて

    Cスタイルの複数行のコメント(つまり、/* ... */)をScalaパーサーのコンビネータで(効率的に)解析する最良の方法は何ですか? 私が関与しているプロジェクトでは、Cのようなプログラミング言語を解析し、複数行のコメントをサポートしたいと考えています。我々はStdLexicalを経由して(すでに、このようなコメントを取り扱うStandardTokenParsersのサブクラスを使用しています

    1

    1答えて

    スラッシュの間の単純な式を解析しようとしています。例:/ 1+2*3 /は、7と評価する必要があります。しかし *Test> parse programInBraces "" "{ 1+2*3/4 }" Right 2 、programInSlashes失敗しない: 私は、これはprogramInBraces大丈夫働く module Test where import Text.Pars

    7

    1答えて

    私は構文解析にParsecを使用するプログラミング言語を書いています。エラーメッセージを報告するために、Parsecのthe Pos moduleのgetPosition関数を使用して、構文木の各要素にそのソースの場所をラベル付けしました。 しかし、それは私が解析した各式の先頭の位置を与えるだけで、ソースコード内の全体の位置を強調することができるように、最初と最後を望みます。 parsecでこのよ

    6

    1答えて

    私はHaskellのようなレイアウト構文で非常に単純な関数言語を解析するためにTrifectaを試しています。私はHaddockのドキュメントとParsecでの私の経験を取り組んでいます。なぜなら私はTrifecta自体の入門資料を見つけることができなかったからです。 私が抱えている問題は、レイアウトのものを使用することです。なぜなら、Haddockのドキュメントはあまり役に立ちませんからです。

    5

    1答えて

    Scalaパーサーコンビネータとの一致を反転することはできますか?私はではないパーサーと行を一致させようとしています。は一連のキーワードで始まります。私は迷惑なゼロ幅の先読み正規表現(例えば"(?!h1|h2).*")でこれを行うことができますが、私はむしろScalaパーサでそれをやります。私が思い付くことができました最高のはこれです: def keyword = "h1." | "h2." d

    4

    1答えて

    nomパーサのシリーズを適用し、一致する完全な&strを返します。私はa+bc+の形式の文字列に一致させたい。私はかなり近い取得することができ、既存のchain! macroを使用する: named!(aaabccc <&[u8], &str>, map_res!( chain!( a: take_while!(is_a) ~ tag!("b") ~

    13

    1答えて

    次のように class LogParser extends JavaTokenParsers { def invertedIndex: Parser[Array[Array[(Int, Int)]]] = { num ~> num ~> num ~> rep(postingsList) ^^ { _.toArray } } def

    6

    1答えて

    私はスカラーの初心者で、S99のスカラーを学ぼうとしています。問題の1つは、文字列からツリーデータ構造に変換することです。手動で行うこともできます。Scalaのパーサーコンビネータライブラリを使用してそれを行う方法も見たいと思っています。 ツリーのデータ構造は sealed abstract class Tree[+T] case class Node[+T](value: T, left: T

    3

    1答えて

    が見つかりました:私は((1+2) > (3+4))に式を変更した場合 Left("`||' expected but `>' found") did not equal Right(BinaryOp(>,BinaryOp(+,Number(1.0),Number(2.0),Num),BinaryOp(+,Number(3.0),Number(4.0),Num),Bool)) が、それは動作し

    12

    1答えて

    リストが1つ以上の空白行で区切られた改行区切りの単語リストを読み込むScalaパーサーコンビネーター文法を書いています。私はそれがList(List(cat, mouse, horse), List(apple, orange, pear))を返却したいと思い cat mouse horse apple orange pear :次の文字列を考えます。 私は、単語リストを改行で区切