File: tmkStyle_l.mll

package info (click to toggle)
ocaml-curses 1.0.2-2
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 328 kB
  • ctags: 869
  • sloc: ml: 2,832; ansic: 673; makefile: 140; sh: 10
file content (44 lines) | stat: -rw-r--r-- 1,492 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
{
  let strbuf = Buffer.create 128
}

let word = ['a'-'z' 'A'-'Z' '0'-'9' '_']
let word_start = ['a'-'z' 'A'-'Z' '_']

rule lexeme = parse
    [' ' '\n' '\r' '\t'] { lexeme lexbuf }
  | '=' { TmkStyle_p.Equal }
  | "!=" { TmkStyle_p.Nequal }
  | '~' { TmkStyle_p.Tilde }
  | '[' { TmkStyle_p.LBracket }
  | ']' { TmkStyle_p.RBracket }
  | '{' { TmkStyle_p.LBrace }
  | '}' { TmkStyle_p.RBrace }
  | '(' { TmkStyle_p.LParen }
  | ')' { TmkStyle_p.RParen }
  | ',' { TmkStyle_p.Comma }
  | '&' '&'? { TmkStyle_p.And }
  | '|' '|'? { TmkStyle_p.Or }
  | '!' { TmkStyle_p.Not }
  | '$' word+ { TmkStyle_p.Env (Lexing.lexeme lexbuf) }
  | word_start word* { TmkStyle_p.Ident (Lexing.lexeme lexbuf) }
  | ['0'-'9']+ { TmkStyle_p.Int (int_of_string (Lexing.lexeme lexbuf)) }
  | ('0' ['x' 'X']) ['0'-'9' 'a'-'f' 'A'-'F']+
      { TmkStyle_p.Int (int_of_string ((Lexing.lexeme lexbuf))) }
  | ('0' ['o' 'O']) ['0'-'7']+ { TmkStyle_p.Int (int_of_string ((Lexing.lexeme lexbuf))) }
  | '"' { TmkStyle_p.Str (string lexbuf) }
  | eof { TmkStyle_p.Eof }

and string = parse
    "\\\\" { Buffer.add_char strbuf '\\'; string lexbuf }
  | "\\\n" { string lexbuf }
  | "\\\"" { Buffer.add_char strbuf '"'; string lexbuf }
  | '\\' _ { Buffer.add_char strbuf '\\';
	     Buffer.add_char strbuf (Lexing.lexeme lexbuf).[1];
	     string lexbuf }
  | [^ '\\' '"']* { Buffer.add_string strbuf (Lexing.lexeme lexbuf);
		    string lexbuf }
  | '"' { let r = Buffer.contents strbuf in Buffer.clear strbuf; r }

{
}