-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathproject.l
43 lines (41 loc) · 948 Bytes
/
project.l
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
digit [0-9]
letter [A-Za-z]
%{
#include <stdio.h>
#include <string.h>
#include "y.tab.h"
int linenum=1;
%}
%%
"if" return IF;
"fi" return FI;
"elif" return ELIF;
"else"return ELSE;
"then" return THEN;
"echo" return ECHO;
[0-9]+ {yylval.string=strdup(yytext);return INT;}
{letter}({letter}|{digit})* {yylval.string=strdup(yytext);return IDENT;}
"$" {yylval.string=strdup(yytext);return DOLLAR;}
"(" return OPENP;
")" return CLOSEP;
"{" return OPENCURLY;
"}" return CLOSEDCURLY;
"[" return OPENSQUARE;
"]" return CLOSESQUARE;
"-gt" return LARGER;
"-lt" return SMALLER;
"-ge" return LARGEREQ;
"-le" return SMALLEREQ;
"-eq" return IFEQUAL;
"=" return ASSIGNOPERATOR;
"+" return PLUS;
"-" return MINUS;
"*" return MULTIP;
"/" return DIV;
"#!/bin/sh" return DEF;
\#\ .* {yylval.string=strdup(yytext); return COMMENT;}
\'.*\' {yylval.string=strdup(yytext); return STRING;}
\n {linenum++;}
[ \t]+
("#".*)
%%