次の動作中のAlexソース ファイルを考えてみましょう。
{
module Main (main) where
}
%wrapper "basic"
tokens :-
$white ;
. { rule "!"}
{
type Token = String
rule tok = \s -> tok
main = do
s <- getContents
mapM_ print (alexScanTokens s)
}
すべてのルールの前に、ヘルパー コードをファイルの一番上に配置したいと考えています。私はこれをやってみました:
{
module Main (main) where
}
%wrapper "basic"
{
type Token = String
rule tok = \s -> tok
}
tokens :-
$white ;
. { rule "!"}
{
main = do
s <- getContents
mapM_ print (alexScanTokens s)
}
しかし、次のエラーが発生しました:
test.x:11:2: parse error
(11 行目は、ヘルパー コードの後の閉じ中括弧です)
ヘルパー コードをファイルの先頭に近づける方法はありますか?
また、「module Main」宣言とともにヘルパー コードを最初のブロックに配置しようとしましたが、「%wrapper」ビットが、生成されたファイルの最初のものとして正しく表示される必要があるインポート ステートメントを生成するため、うまくいきませんでした。