aboutsummaryrefslogtreecommitdiff
path: root/src/nix-instantiate
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2003-11-19 10:04:03 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2003-11-19 10:04:03 +0000
commit2be8b5917a8040fac72e7970e94bbb436e8c35d6 (patch)
tree6a5752e31772f26666057aa50fa40ee7f39f5265 /src/nix-instantiate
parent38946e1378d50cf2921c509635e2119216fc9b0c (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.
Diffstat (limited to 'src/nix-instantiate')
-rw-r--r--src/nix-instantiate/Makefile.am2
-rw-r--r--src/nix-instantiate/nix.sdf30
-rw-r--r--src/nix-instantiate/parser.cc2
3 files changed, 20 insertions, 14 deletions
diff --git a/src/nix-instantiate/Makefile.am b/src/nix-instantiate/Makefile.am
index 3a09add0c..6fe798501 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 54f5d5266..615bdb974 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 f950a51f6..b2c74af33 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. */