パーサーコンビネータを使用して準構造のログファイルデータをJSONに変換しています。出力のデータ要素を元の入力ファイルに配置できるように、位置情報を使用して結果を豊かにしたいと思います。私はsource codeでpositioned
方法の説明とAPI docsを見たとき、私は解決策は、右私の目の前にあったと思ったが、代わりに私はこのような例外に対して私の頭を叩いています:位置指定された演算子をRegexParserで使用できますか?
Error:(133, 24) inferred type arguments [String]
do not conform to method positioned's type
parameter bounds [T <: scala.util.parsing.input.Positional]
リフティングtutorial blog post on parser combinatorsから私はフル-BLであるものの、この推測は、私はpositioned
修飾子を使用している見つけることができる最初の完全な例だったthis blog postとits accompanying source codeに触発された
object ReallySimpleParser2 extends RegexParsers {
def sentence = positioned { hello ~ world }
def hello = "hello"
def world = "world"
}
:ような何かを言うことができると期待独自のパーサー/レクサーの演習。 IDENTIFIER
タイプを定義する際に関与魔法に
def identifier: Parser[IDENTIFIER] = positioned {
"[a-zA-Z_][a-zA-Z0-9_]*".r ^^ { str => IDENTIFIER(str) }
}
おそらく感謝:彼らはのようなものを言うことができました。
したがってでpositioned
をそのまま使用することができますか?もしそうなら、positioned
とRegexParser
を利用するために最低限必要な足場はどうなっていますか?
私はまた、私にはあまりにも斜めすぎるが、http://stackoverflow.com/questions/20919068/using-positional-and-positioned-in-scala-parser-combinatorsが方法を指し示すかもしれないことを言及することを意味する。 –