From 6039e16258edf888f6d9f74eb8e1aa099043e70a Mon Sep 17 00:00:00 2001 From: Jeremie Dimino Date: Sat, 12 Nov 2016 11:48:24 +0000 Subject: [PATCH] added meta --- src/meta.ml | 20 ++++++++++++++++++++ src/meta_lexer.mll | 15 +++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 src/meta.ml create mode 100644 src/meta_lexer.mll diff --git a/src/meta.ml b/src/meta.ml new file mode 100644 index 00000000..7b28826d --- /dev/null +++ b/src/meta.ml @@ -0,0 +1,20 @@ +(** META file representation *) + +type t = + { name : string + ; sub : t list + ; defs : def list + } + +and kind = Set | Add + +and def = + { kind : kind + ; var : string + ; predicates : predicate list + } + +and predicate = + | Pos of string + | Neg of string + diff --git a/src/meta_lexer.mll b/src/meta_lexer.mll new file mode 100644 index 00000000..0ab52225 --- /dev/null +++ b/src/meta_lexer.mll @@ -0,0 +1,15 @@ +{ open Meta_parser } + +rule token = parse + | [' ' '\t']* { token lexbuf } + | '#' [^ '\r' '\n']* { token lexbuf } + | ("\n" | "\r\n") { Lexing.new_line lexbuf; token lexbuf } + + | ['A'-'Z' 'a'-'z' '0'-'9' '_' '.']+ as s { NAME s } + | '"' ([^'"']* as s) '"' { STRING s } + | '-' { MINUS } + | '(' { LPAREN } + | ')' { RPAREN } + | ',' { COMMA } + | '=' { EQUAL } + | "+=" { PLUS_EQUAL }