1

Parsec ライブラリを使用して Haskell で Pascal 言語パーサーを開発しており、Parsec.Token クラスで定義されたいくつかのトークンを再定義する必要があります。

それについて言えば、ここに私の場合があります:

stringLiteralトークンの照合方法を変更する必要があります。デフォルトの定義では、それは何かbetween char '"'(こちらを参照between '\'') ですが、 (アポストロフィ)にする必要があります。この変更を Parsec の動作に行うにはどうすればよいですか?

ありがとう!!!

4

1 に答える 1

3

という名前のデータ型のフィールドを調整することについて話しているGenTokenParser. データ型に適切なデフォルトを自動的に入力する関数を使用しているように見えますが、1 つのことを調整したいだけです。

 myMakeTokenParser langDef =
    let default = makeTokenParser langDef
    in default { stringLiteral = newStringLit }
  where
  newStringLit = lexeme (
                      do{ str <- between (char '\'')
                                         (char '\'' <?> "end of string")
                                         (many stringChar)
                        ; return (foldr (maybe id (:)) "" str)
                        }
                      <?> "literal string")
于 2012-02-25T22:03:32.717 に答える