fslex

どうもバギーなようす。

rule token = parse
    ' '                  { token lexbuf }
  | '\"' [^ '\"']* '\"'  { STR(Lexing.lexeme lexbuf) }

がこける。曰く

lexer.mll(6,4): error: Unexpected character '''

他にも、

{
open Parser
}
rule token = parse
    ' ' { token lexbuf }
  | ['0'-'9']+ { INT (int_of_string (Lexing.lexeme lexbuf)) }
  | '+' { PLUS }
  | ['-' '--'] { MINUS }
  | '=' { EXEC }
  | eof { EXEC }

も通らない。変なlexerだけど。*1

うーむ。F#の開発者は、fslexを使ったことがあるんだろうか。

rule token = parse
    ' '                         { token lexbuf }
  | '\034' [^ '\034']* '\034'   { STR(Lexing.lexeme lexbuf) }

としたら通った。めでたし、めでたし。

しかし、

  let lexbuf = Lexing.from_channel stdin in
    ...

が通らない。こける。

なんとかしてくれー

*1:あたりまえ。なにやってんだかorz