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"