1

ファイル「test-lexer.lisp」を使用して、 lexを次のようにわずかに変更しました。

(defparameter *lex* (test-lexer "{ 1.0 12 fred 10.23e12"))

テストの繰り返し回数を6回に増やしました

(defun test ()
  (loop repeat 6
 collect (multiple-value-list (funcall *lex*))))

そして、「{」をトークンとして認識させるために、さまざまな方法で test-lexer を変更しようとしました。

たとえば、 (deflexer test-lexer ...) に [:punct:] を追加すると、

変えることで

("[:alpha:][:alnum:]*"
  (return (values 'name %0)))

("[:alpha:][:alnum:][:punct:]*"
   (return (values 'name %0)))

一貫して次のようなエラーが発生します

"""レクサーは "{ 1.0 12 fred 10.23e12"、位置 0 ("{ 1.0 12 fred 10.23e") [SIMPLE-ERROR タイプの条件]""" でトークンを認識できません

認識する文字として「{」を指定するにはどうすればよいですか? それとも私の問題は他の場所にありますか?

4

1 に答える 1