diff options
Diffstat (limited to 'lex.l')
-rw-r--r-- | lex.l | 33 |
1 files changed, 33 insertions, 0 deletions
@@ -0,0 +1,33 @@ | |||
1 | %{ | ||
2 | #include "syntax.tab.h" // Bison 生成的头文件 | ||
3 | |||
4 | void yyerror(const char *s); | ||
5 | %} | ||
6 | |||
7 | %option noyywrap | ||
8 | |||
9 | %% | ||
10 | |||
11 | [\t ]+ { /* Ignore whitespace */ } | ||
12 | "\n" { printf("new line\n");return NEWLINE; } | ||
13 | "\\\n" { printf("> "); } | ||
14 | ">>" { return APPEND_OUT; } | ||
15 | "<<" { return HEREDOC; } | ||
16 | ">" { return REDIRECT_OUT; } | ||
17 | "<" { return REDIRECT_IN; } | ||
18 | ">>&" { return APPEND_OUTPUT_ERR; } | ||
19 | ">&" { return REDIRECT_OUTPUT_ERR; } | ||
20 | "|" { return PIPE; } | ||
21 | "&&" { return AND; } | ||
22 | "||" { return OR; } | ||
23 | "&" { return BACKGROUND; } | ||
24 | \"(\\.|[^\"])*\" { yylval.str = strdup(yytext); return STRING; } | ||
25 | [a-zA-Z0-9_\-\/.]+ { yylval.str = strdup(yytext); return WORD; } | ||
26 | |||
27 | |||
28 | %% | ||
29 | |||
30 | void yyerror(const char *s) | ||
31 | { | ||
32 | fprintf(stderr, "error: %s\n", s); | ||
33 | } | ||