0

こんにちは、単純なレクサーを書いています

:- module(lekser, [lekser/3]).


lekser(Tokens) -->
    white_space,
    (
            (
                   "{",  !, { Token = tkLBrace }
                ;  "}",  !, { Token = tkRBrace }
                ;  ")",  !, { Token = tkRParen }
                ;  "(",  !, { Token = tkLParen }
                ;  ";",  !, { Token = tkSColon }
                ;  "\",  !, { Token = tkLambda }
                ;  "->", !, { Token = tkImpli }
                ;  "<",  !, { Token = tkLT }
                ;  ">",  !, { Token = tkGT }
                ;  "<=", !, { Token = tkLeq }
                ;  ">=", !, { Token = tkGeq }
                ;  "=",  !, { Token = tkAssgn }
                ;  "\=", !, { Token = tkNeq }
                ;  "+",  !, { Token = tkPlus }
                ;  "-",  !, { Token = tkMinus }
                ;  "*",  !, { Token = tkTimes }
                ; "div", !, { Token = tkDiv }
                ; "mod", !, { Token = tkMod }
                   ...
        ...)).

これがコードの始まりです。誰かが私がどこで間違いを犯したか教えてください.Syntax error: String too long (see style_check/1)

...わかりました理由はわかりましたが、なぜこのエディター"\"が奇妙な方法で解析するように機能するのかわかりません。それを作成する必要"\""がありますが、おそらく\演算子ではなく\"変更方法それ ?

4

1 に答える 1

0

私の回答を広げるために、はい、"\""あなたを使用して、二重引用符で正確に文字列を入力してください"。例えば:

?- write("\"abc\"").
[34,97,98,99,34]

abc文字列が 2 つの 34 値 (ASCII の二重引用符) で囲まれていることに注意してください。

于 2012-04-21T11:44:28.343 に答える