Compare commits
	
		
			1 Commits
		
	
	
		
			main
			...
			b4301ed650
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| b4301ed650 | 
							
								
								
									
										36
									
								
								doc/parser_grammar.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								doc/parser_grammar.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | |||||||
|  | /* string literals are lexer identifier tokens with that particular value */ | ||||||
|  | <program>   ::= <statement>* | ||||||
|  | <statement> ::= ( <label> | <directive> | <instruction> ) <newline> | ||||||
|  |  | ||||||
|  | <label> ::= <identifier> <colon> | ||||||
|  |  | ||||||
|  | <directive> ::= <dot> <section> | ||||||
|  |  | ||||||
|  | <section>   ::= "section" <identifier> | ||||||
|  |  | ||||||
|  | <instruction> ::= <identifier> <operands> | ||||||
|  |  | ||||||
|  | <operands> ::= <operand> ( <comma> <operands> )* | ||||||
|  |  | ||||||
|  | <operand>  ::= <register> | <immediate> | <memory> | ||||||
|  |  | ||||||
|  | <register> ::= <register_base> | <register_extra> | ||||||
|  | <register_base> ::= "rax" | "rbx" | "rcx" | "rdx" | "rsi" | "rdi" | "rbp" | "rsp" | ||||||
|  | <register_extra> ::= "r8" | "r9" | "r10" | "r11" | "r12" | "r13" | "r14" | "r15"  | ||||||
|  |  | ||||||
|  | <immediate> ::= <number> | <label_reference> | ||||||
|  | <number> ::= <octal> | <binary> | <decimal> | <hexadecimal> | ||||||
|  |  | ||||||
|  | <label_reference> ::= <identifier> | ||||||
|  |  | ||||||
|  | <memory> ::= <lbracket> <memory_expression> <rbracket> | ||||||
|  |  | ||||||
|  | <memory_expression> ::= <label_reference> | <register_expression> | ||||||
|  |  | ||||||
|  | <register_expression> ::= <register> ( <plus> <register> <asterisk> <number> )? ( <plus_or_minus> <number> )? | ||||||
|  |  | ||||||
|  | <register_displacement> ::= <plus> <register> <asterisk> <number> | ||||||
|  |  | ||||||
|  | <register_offset> ::= <plus_or_minus> <number> | ||||||
|  |  | ||||||
|  | <plus_or_minus> ::= <plus> | <minus> | ||||||
		Reference in New Issue
	
	Block a user