1 %{
2 #include<stdio.h>
3 %}
4
5 %token IF ELSE
6 %token IDENTIFIER CONSTANT STRING_LITERAL
7 %token EQ_OP
8
9 %start compound_statement
10
11 %%
12
13 assignment_statement
14 : IDENTIFIER '=' expression
15 ;
16
17 selection_statement
18 : IF '(' expression ')' statement
19 | IF '(' expression ')' statement ELSE statement
20 ;
21
22 expression
23 : IDENTIFIER
24 | CONSTANT
25 | STRING_LITERAL
26 | '(' expression ')'
27 | expression EQ_OP expression
28 ;
29
30 statement
31 : compound_statement
32 | selection_statement
33 | assignment_statement
34 ;
35
36 statement_list
37 : statement
38 | statement_list ';' statement
39 ;
40
41 compound_statement
42 : '{' '}'
43 | '{' statement_list '}'
44 ;
45
46 %%
47
48 int main()
49 {
50 yyparse();
51 }
52
53 int yyerror(char* s)
54 {
55 fprintf(stderr, "%s\n", s);
56 return 0;
57 }
58
59 /*
60 int yylex()
61 {
62 return 0;
63 }
64 */
65 #include "lex.yy.c"