module alloy/lexical/WhiteSpace
exports
  sorts Ws ShortCom LongCom CommChar Asterisk Eof 
  lexical syntax
    [\t\ \n\r]      -> Ws

    "//" ~[\n]* ([\n] | Eof)  -> ShortCom
    "/*" CommChar* "*/" -> LongCom
        -> Eof  

    ~[\*]     -> CommChar

    "*"       -> Asterisk
    Asterisk  -> CommChar

  lexical restrictions
    Asterisk -/- [\/]
    Eof      -/- ~[]

  lexical syntax
    ShortCom  -> LAYOUT
    LongCom   -> LAYOUT
    Ws    -> LAYOUT

  context-free restrictions
    LAYOUT? -/- [\ \t\n\r]
    LAYOUT? -/- [\/].[\*]
    LAYOUT? -/- [\/].[\/]
