You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
vmassembler/src/parser.y

34 lines
703 B

%{
#include <stdlib.h>
#include <parser.hpp>
int yylex(void);
void yyerror(char *);
extern int yylineno;
%}
%union {
char vinstr_name[20];
char label_name[256];
unsigned long long imm_val;
}
%token <label_name> LABEL
%token <vinstr_name> VINSTR
%token <imm_val> IMM
%%
PROGRAM:
LABEL { parse_t::get_instance()->add_label($1); }
| PROGRAM LABEL { parse_t::get_instance()->add_label($2); }
| PROGRAM VINSTRS
|
;
VINSTRS:
VINSTR { parse_t::get_instance()->add_vinstr($1); }
| VINSTR IMM { parse_t::get_instance()->add_vinstr($1, $2); }
| VINSTRS VINSTR { parse_t::get_instance()->add_vinstr($2); }
| VINSTRS VINSTR IMM { parse_t::get_instance()->add_vinstr($2, $3); }
;
%%