www.pudn.com > Micro.rar > Syntax.h
#pragma once
#include "common.h"
#include "Lex.h"
#include "Semantic.h"
class Syntax
{
public:
Syntax(void);
~Syntax(void);
};
/*
-> begin end
-> }
-> := ;
-> );
-> ( );
-> ID {, ID}
-> {, }
-> { }
->
-> ID
-> INTLITERAL
-> PLUSOP
-> MINUSOP
-> PLUSOP
-> MINUSOP
-> SCANEOF
带语义处理的表示: #xxxx表示对应的处理函数
-> #start begin end
-> }
-> := #assign ;
-> read ( );
-> write ( );
-> #read_id {, #read_id }
-> #write_expr {, #write_expr }
-> { #gen_infix }
-> ( )
->
-> INTLITERAL #process_literal
-> PLUSOP #process_op
-> MINUSOP #process_op
-> ID #process_id
-> SCANEOF #finish
进行语法扩展
-> SCANEOF #finish
-> #start {, }
-> function ( ) begin end
-> function ( ) begin end
-> { }
-> := #assign ;
-> read( );
-> write ( );
-> ( ) #process_func_call;
-> ( ) #process_func_call;
-> #process_param {, #process_param }
-> #process_argu {, #process_argu }
-> #read_id {, #read_id }
-> #write_expr {, #write_expr }
-> { #gen_infix }
-> { }
-> ( )
->
-> INTLITERAL #process_literal
-> PLUSOP #process_op
-> MINUSOP #process_op
-> MULOP #process_op
-> DIVOP #process_op
-> ID #process_id
-> ID #gen_func_name
*/
void system_goal (void);
void program (void);
void function (void);// new added
void statement_list (void);
void statement (void);
void param_list (void);// new added
void argument_list (void);// new added
void read_list (void);// id_list
void write_list (void);// expr_list
void expression (expr_rec *);
void mul_expr (expr_rec *);// new added
void primary (expr_rec *);
void add_op (op_rec *);
void mul_op (op_rec *);
void ident (expr_rec *);
void fname (expr_rec *);// new added
token next_token();
void match(token);
void syntax_error(token);