Led 3
Led 3
#include <stdio.h>
#include <math.h>
#include <string.h>
%}
%token DEF 1
%token INTEGER 2
%token REAL 3
%token STRING 4
%token IF 5
%token THEN 6
%token WHILE 7
%token REAL_CONST 8
%token ID 9
%token INT_CONST 10
%token STRING_CONST 11
%token SEMI 12
%token COLON 13
%token LEFT_PAREN 14
%token RIGHT_PAREN 15
%token PLUS 16
%token MINUS 17
%token MULT 18
%token DIVIDE 19
%token CARAT 20
%token MOD 21
%token EQUAL 22
%token NOT_EQUAL 23
%token LESS_THAN 24
%token GREATER_THAN 25
%token LESS_EQUAL 26
%token GREATER_EQUAL 27
%token ASSIGN 28
%token LEFT_SQUARE 29
%token RIGHT_SQUARE 30
%token LEFT_BRACE 31
%token RIGHT_BRACE 32
%token COMMA 33
input : statement_list
statement_list
| statement statement_list
statement
: variable_definition
| assignment_statement
| conditional_statement
| loop_statement
| block_statement
| expression SEMI
variable_definition
identifier
: ID
{ $$ = strdup(val); }
type : INTEGER
{ $$ = "integer"; }
| REAL
{ $$ = "real"; }
| STRING
{ $$ = "string"; }
assignment_statement
constant
: REAL_CONST
{ $$ = strdup(val); }
| INT_CONST
{ $$ = strdup(val); }
| STRING_CONST
{ $$ = strdup(val); }
operator
: PLUS
{ $$ = "addition"; }
given: emcee.l
%option noyywrap
D [0-9]
A [a-zA-Z]
%{
#include "tokens.h"
char val[100];
%}
%%
if return (IF);
"\n" ;
%%
exit(0);
given: emceeparse.c
#include <stdio.h>
int yyparse();
main () {
yyparse();
given: tokens.h
#define DEF 1
#define INTEGER 2
#define REAL 3
#define STRING 4
#define IF 5
#define THEN 6
#define WHILE 7
#define REAL_CONST 8
#define ID 9
#define INT_CONST 10
#define STRING_CONST 11
#define SEMI 12
#define COLON 13
#define LEFT_PAREN 14
#define RIGHT_PAREN 15
#define PLUS 16
#define MINUS 17
#define MULT 18
#define DIVIDE 19
#define CARAT 20
#define MOD 21
#define EQUAL 22
#define NOT_EQUAL 23
#define LESS_THAN 24
#define GREATER_THAN 25
#define LESS_EQUAL 26
#define GREATER_EQUAL 27
#define ASSIGN 28
#define LEFT_SQUARE 29
#define RIGHT_SQUARE 30
#define LEFT_BRACE 31
#define RIGHT_BRACE 32
#define COMMA 33
given: sqrt.mc