Display syntax errors using an error action
authorMichael Spang <mspang@csclub.uwaterloo.ca>
Sun, 29 Nov 2009 04:39:10 +0000 (23:39 -0500)
committerMichael Spang <mspang@csclub.uwaterloo.ca>
Tue, 22 Dec 2009 03:09:50 +0000 (22:09 -0500)
Signed-off-by: Michael Spang <mspang@csclub.uwaterloo.ca>
awesome.rl

index 31714f6..8e9b5b1 100644 (file)
@@ -36,14 +36,18 @@ using namespace std;
       tmp_list.clear();
     }
 
+    action misc_error {
+        fprintf(stderr, "%s: %d: Syntax Error\n", "stdin", curline);
+    }
+
     newline = '\n' @{ curline += 1; };
     comment = '#' (any - newline)* newline;
     whitespace = [\t\v\f\r ] | comment | newline;
     package_name = ((lower | digit) (lower | digit | '+' | '-' | '.')+) >pkgstart @pkgend;
     package_list = ((whitespace+ package_name)+ %add_list whitespace*) >clear_list;
-    cmd_install = 'install' package_list ';' @install;
-    cmd_remove = 'remove' package_list ';' @remove;
-    main := (cmd_install | cmd_remove | whitespace)*;
+    cmd_install = ('install' package_list ';') @install;
+    cmd_remove = ('remove' package_list ';') @remove;
+    main := (cmd_install | cmd_remove | whitespace)* $err(misc_error);
 }%%
 
 %% write data;