summaryrefslogtreecommitdiffstats
path: root/parser.l
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2014-03-13 21:46:19 -0700
committerKaz Kylheku <kaz@kylheku.com>2014-03-13 21:46:19 -0700
commit352dd33ceb60f08276c80b0821cbdb0ce94a207e (patch)
tree360eb5e129406b93485ef1d33765ac1386eeaf04 /parser.l
parenta3ccd2e6feb47fde5d5762c5240ac6c3e41864a6 (diff)
downloadtxr-352dd33ceb60f08276c80b0821cbdb0ce94a207e.tar.gz
txr-352dd33ceb60f08276c80b0821cbdb0ce94a207e.tar.bz2
txr-352dd33ceb60f08276c80b0821cbdb0ce94a207e.zip
Implementing @(if)/@(elif)/@(else) in the pattern language.
Input side for now; output later. * parser.y (if_clause, elif_clauses_opt, else_clause_opt): New nonterminals. (IF, ELIF, ELSE): New tokens. (yybadtoken): Handle IF, ELIF, ELSE. * parser.l: Recognize and return new tokens IF, ELIF and ELSE. * txr.1: Documented. * genvim.txr: Updated with if, elsif and else directive keywords. * txr.vim: Regenerated
Diffstat (limited to 'parser.l')
-rw-r--r--parser.l18
1 files changed, 18 insertions, 0 deletions
diff --git a/parser.l b/parser.l
index 0e569980..3c4b7159 100644
--- a/parser.l
+++ b/parser.l
@@ -489,6 +489,24 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U}
return FINALLY;
}
+<SPECIAL>\({WS}if/{ID_END} {
+ yy_push_state(NESTED);
+ yylval.lineno = lineno;
+ return IF;
+}
+
+<SPECIAL>\({WS}elif/{ID_END} {
+ yy_push_state(NESTED);
+ yylval.lineno = lineno;
+ return ELIF;
+}
+
+<SPECIAL>\({WS}else{WS}\) {
+ yy_pop_state();
+ yylval.lineno = lineno;
+ return ELSE;
+}
+
<SPECIAL>[{] {
yy_push_state(BRACED);
yylval.lineno = lineno;