diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2003-11-19T10·04+0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2003-11-19T10·04+0000 |
commit | 2be8b5917a8040fac72e7970e94bbb436e8c35d6 (patch) | |
tree | 6a5752e31772f26666057aa50fa40ee7f39f5265 | |
parent | 38946e1378d50cf2921c509635e2119216fc9b0c (diff) |
* Use `sdftable -s' to get warnings about the grammar.
* Several bug fixes in the grammar. * Allow one-line comments (#... and //...) to end in EOF.
-rw-r--r-- | src/nix-instantiate/Makefile.am | 2 | ||||
-rw-r--r-- | src/nix-instantiate/nix.sdf | 30 | ||||
-rw-r--r-- | src/nix-instantiate/parser.cc | 2 |
3 files changed, 20 insertions, 14 deletions
diff --git a/src/nix-instantiate/Makefile.am b/src/nix-instantiate/Makefile.am index 3a09add0c645..6fe79850116e 100644 --- a/src/nix-instantiate/Makefile.am +++ b/src/nix-instantiate/Makefile.am @@ -17,6 +17,6 @@ parse-table.h: nix.tbl ../bin2c/bin2c nixParseTable < $< > $@ || (rm $@ && exit 1) %.tbl: %.sdf - ../../externals/inst/bin/sdf2table -i $< -o $@ + ../../externals/inst/bin/sdf2table -s -i $< -o $@ CLEANFILES = parse-table.h nix.tbl diff --git a/src/nix-instantiate/nix.sdf b/src/nix-instantiate/nix.sdf index 54f5d5266f79..615bdb974775 100644 --- a/src/nix-instantiate/nix.sdf +++ b/src/nix-instantiate/nix.sdf @@ -17,7 +17,7 @@ imports Fix-Exprs Fix-Layout module Fix-Exprs imports Fix-Lexicals URI exports - sorts Expr Bind Formal + sorts Expr Formal Bind Binds BindSemi ExprList context-free syntax Id -> Expr {cons("Var")} @@ -34,11 +34,11 @@ exports Expr Expr -> Expr {cons("Call"), left} - "{" {Formal ","}* "}" ":" Expr -> Expr {cons("Function"), right} + "{" {Formal ","}* "}" ":" Expr -> Expr {cons("Function")} Id -> Formal {cons("NoDefFormal")} Id "?" Expr -> Formal {cons("DefFormal")} - "assert" Expr ";" Expr -> Expr {cons("Assert"), right} + "assert" Expr ";" Expr -> Expr {cons("Assert")} "rec" "{" Binds "}" -> Expr {cons("Rec")} "let" "{" Binds "}" -> Expr {cons("LetRec")} @@ -87,7 +87,7 @@ exports module Fix-Lexicals exports - sorts Id Path + sorts Id Int Str Path PathComp Bool lexical syntax [a-zA-Z\_][a-zA-Z0-9\_\']* -> Id "rec" -> Id {reject} @@ -120,12 +120,17 @@ exports module URI exports - sorts Uri + sorts Uri Uhierpart Uopaquepart Uuricnoslash Unetpath Uabspath + Urelpath Urelsegment Uscheme Uauthority Uregname Userver + Uuserinfo Uhostport Uhost Uhostname Udomainlabel Utoplabel + UIPv4address Uport Upath Upathsegments Usegment Uparam + Upchar Uquery Ufragment Uuric Ureserved Uunreserved Umark + Uescaped Uhex Ualphanum Ualpha Ulowalpha Uupalpha Udigit lexical syntax - Uscheme ":" (Uhierpath | Uopaquepath) -> Uri + Uscheme ":" (Uhierpart | Uopaquepart) -> Uri - (Unetpath | Uabspath) ("?" Uquery)? -> Uhierpath - Uuricnoslash Uuric* -> Uopaquepath + (Unetpath | Uabspath) ("?" Uquery)? -> Uhierpart + Uuricnoslash Uuric* -> Uopaquepart Uunreserved | Uescaped | [\;\?\:\@\&\=\+\$\,] -> Uuricnoslash @@ -187,17 +192,18 @@ exports module Fix-Layout exports + sorts HashComment Asterisk Comment EOF lexical syntax [\ \t\n] -> LAYOUT HashComment -> LAYOUT Comment -> LAYOUT - "#" ~[\n]* [\n] -> HashComment - "//" ~[\n]* [\n] -> HashComment + "#" ~[\n]* ([\n] | EOF) -> HashComment + "//" ~[\n]* ([\n] | EOF) -> HashComment "/*" ( ~[\*] | Asterisk )* "*/" -> Comment [\*] -> Asterisk + "" -> EOF lexical restrictions Asterisk -/- [\/] + EOF -/- ~[] context-free restrictions LAYOUT? -/- [\ \t\n] | [\#] - syntax - HashComment <START> -> <START> diff --git a/src/nix-instantiate/parser.cc b/src/nix-instantiate/parser.cc index f950a51f69ce..b2c74af33e77 100644 --- a/src/nix-instantiate/parser.cc +++ b/src/nix-instantiate/parser.cc @@ -154,7 +154,7 @@ Expr parseExprFromFile(Path path) if (!imploded) throw Error(format("cannot implode parse tree")); - debug(format("imploded parse tree of `%1%': %2%") + printMsg(lvlVomit, format("imploded parse tree of `%1%': %2%") % path % imploded); /* Finally, clean it up. */ |