From e0953d53de1dbb89ef0ff779e53ffdb0d988e806 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Thu, 19 Feb 2015 08:05:16 -0500 Subject: Allow the leading component of a path to be a ~ --- src/libexpr/parser.y | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/libexpr/parser.y') diff --git a/src/libexpr/parser.y b/src/libexpr/parser.y index 7d877cd67862..f4648b902ba4 100644 --- a/src/libexpr/parser.y +++ b/src/libexpr/parser.y @@ -268,7 +268,7 @@ void yyerror(YYLTYPE * loc, yyscan_t scanner, ParseData * data, const char * err %token ID ATTRPATH %token STR IND_STR %token INT -%token PATH SPATH +%token PATH HPATH SPATH %token URI %token IF THEN ELSE ASSERT WITH LET IN REC INHERIT EQ NEQ AND OR IMPL OR_KW %token DOLLAR_CURLY /* == ${ */ @@ -376,6 +376,14 @@ expr_simple $$ = stripIndentation(CUR_POS, data->symbols, *$2); } | PATH { $$ = new ExprPath(absPath($1, data->basePath)); } + | HPATH { + auto path = string{$1 + 1}; + $$ = new ExprConcatStrings(CUR_POS, false, new vector{ + new ExprPath("/"), + new ExprApp(new ExprVar(data->symbols.create("__getEnv")), + new ExprString(data->symbols.create("HOME"))), + new ExprString(data->symbols.create(path))}); + } | SPATH { string path($1 + 1, strlen($1) - 2); $$ = new ExprApp(CUR_POS, -- cgit 1.4.1