我在词法分析中使用一些语法来检测字符串
{-# LANGUAGE DeriveGeneric #-}
import GHC.Generics
import Data.Aeson
import Data.Aeson.TH
data MyData = MyData {
id :: Int,
something :: Maybe String
} deriving (Generic, Show)
instance ToJSON MyData where
toJSON = genericToJSON defaultOptions
但这不起作用。
答案 0 :(得分:1)
我想你想要
\".*\"
但要注意flex中的。与换行符不匹配。并且,正如@chqrlie在评论中提到的那样, 匹配" ,因此它将匹配最后一个字符串的末尾,而不是当前字符串的末尾。
所以更好的模式可能是:
\"[^"]*\"
([^"]
匹配包括换行符在内的任何字符,但" 除外。
但是你无法在字符串中包含" 。所以你必须决定应该是什么语法。如果要实现SQL样式,使用双引号表示字符串中的单引号,可以使用
\"([^"]|\"\")*\"
对于可能更常见的反斜杠转义:
\"([^"]|\\(.|\n))*\"