summaryrefslogtreecommitdiff
path: root/as/as.y
blob: ed8714fa42a54bb13b2b748c30b7b032580014e4 (plain)
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
%{
#include <inttypes.h>
%}

%union {
	char *s;
	uintmax_t n;
};

%token<n> NUMBER
%token<s> TOKEN
%token NEWLINE

%%

program
	: /* empty */
	| instruction NEWLINE
;

instruction
	: bare_instruction
	| TOKEN ':' bare_instruction
;

bare_instruction
	: TOKEN
	| TOKEN operand
	| TOKEN operand ',' operand
	| TOKEN operand ',' operand ',' operand
;

operand
	: TOKEN
	| NUMBER
;