1 graydon 1.1 (* simplified lexical structure of make(1) language *)
2
3 {
4 open Lexing
5 open String
6 }
7
8 let special = ['$' '@' '<' '^' '(' ')' '=' ':' '%']
9 let nq = ("\\\""|[^'"'])
10 let sym = ['-' '_' '.' 'a'-'z''A'-'Z''0'-'9']*
11
12 rule token = parse
13 ' '* { token lexbuf }
14 | ('#' [^'\n']*)? ('\n'+) { ("EOL", "") }
15 | '\t' { ("TAB", "") }
16 | eof { ("EOF", "") }
17 | (sym | '"' nq* '"') { ("WORD", lexeme lexbuf) }
18 | special { ("", lexeme lexbuf)}
|