generated at
GenLanguageDef
Parsecでparserの自動生成するときの最初の工程であるlexer作成につかう
lexerの設定ファイルとなる型
最終的には、これの値をmakeTokenParserに食わすとlexerが生成される


基本的な設定 ref
hs
data GenLanguageDef s u m = LanguageDef { commentStart :: String, -- コメント開始 commentEnd :: String, -- コメント終了 commentLine :: String, -- 1行コメントの開始 nestedComments :: Bool, -- わからん identStart :: ParsecT s u m Char, -- identの始まり identLetter :: ParsecT s u m Char, -- identの終わり opStart :: ParsecT s u m Char, opLetter :: ParsecT s u m Char, reservedNames :: [String], -- 予約記号 reservedOpNames:: [String], -- 予約語 caseSensitive :: Bool }
nestedComments
「ネストされたブロックコメントをサポートするかどうか」
「ネストされたコメント」が具体的に何を指しているのかがわからない


具体的な値は例を見るのが速い ref
hs
haskellStyle, javaStyle :: LanguageDef st haskellStyle = emptyDef { commentStart = "{-" , commentEnd = "-}" , commentLine = "--" , nestedComments = True , identStart = letter , identLetter = alphaNum <|> oneOf "_'" , opStart = opLetter haskellStyle , opLetter = oneOf ":!#$%&*+./<=>?@\\^|-~" , reservedOpNames= [] , reservedNames = [] , caseSensitive = True } javaStyle = emptyDef { commentStart = "/*" , commentEnd = "*/" , commentLine = "//" , nestedComments = True , identStart = letter , identLetter = alphaNum <|> oneOf "_'" , reservedNames = [] , reservedOpNames= [] , caseSensitive = False }
haskellStyleの reservedOpNames などは、ここを見れば一覧できる



既にあるものを利用する
Text.Parsec.Languageに用意されているものもある
emptyDef は最もシンプルなもの
haskellDef javaStyle なんてものもある
たぶん他の場所にもあるmrsekut