33 private object Parser extends Parse.Parser |
33 private object Parser extends Parse.Parser |
34 { |
34 { |
35 val DECLARE = "declare" |
35 val DECLARE = "declare" |
36 val DEFINE = "define" |
36 val DEFINE = "define" |
37 |
37 |
38 val syntax = Outer_Syntax.empty + ":" + "=" + DECLARE + DEFINE |
38 val syntax = Outer_Syntax.empty + ":" + "=" + "--" + DECLARE + DEFINE |
39 |
39 |
40 val entry: Parser[Options => Options] = |
40 val entry: Parser[Options => Options] = |
41 { |
41 { |
42 val option_name = atom("option name", _.is_xname) |
42 val option_name = atom("option name", _.is_xname) |
43 val option_type = atom("option type", _.is_ident) |
43 val option_type = atom("option type", _.is_ident) |
44 val option_value = atom("option value", tok => tok.is_name || tok.is_float) |
44 val option_value = atom("option value", tok => tok.is_name || tok.is_float) |
45 |
45 |
46 keyword(DECLARE) ~! (option_name ~ keyword(":") ~ option_type ~ |
46 keyword(DECLARE) ~! (option_name ~ keyword(":") ~ option_type ~ |
47 keyword("=") ~ option_value ~ opt(text)) ^^ |
47 keyword("=") ~ option_value ~ (keyword("--") ~! text ^^ { case _ ~ x => x } | success(""))) ^^ |
48 { case _ ~ (a ~ _ ~ b ~ _ ~ c ~ d) => |
48 { case _ ~ (a ~ _ ~ b ~ _ ~ c ~ d) => (options: Options) => options.declare(a, b, c, d) } | |
49 (options: Options) => options.declare(a, b, c, d.getOrElse("")) } | |
|
50 keyword(DEFINE) ~! (option_name ~ keyword("=") ~ option_value) ^^ |
49 keyword(DEFINE) ~! (option_name ~ keyword("=") ~ option_value) ^^ |
51 { case _ ~ (a ~ _ ~ b) => (options: Options) => options.define(a, b) } |
50 { case _ ~ (a ~ _ ~ b) => (options: Options) => options.define(a, b) } |
52 } |
51 } |
53 |
52 |
54 def parse_entries(file: Path): List[Options => Options] = |
53 def parse_entries(file: Path): List[Options => Options] = |