6 static YY_cl_ucsim_parser_STYPE *yylval;
10 #define tok(x) (YY_cl_ucsim_parser_CLASS::x)
11 #define lexer_obj (dynamic_cast<class cl_ucsim_lexer *>(this))
19 "+" return(tok(PTOK_PLUS));
20 "-" return(tok(PTOK_MINUS));
21 "*" return(tok(PTOK_ASTERIX));
22 "/" return(tok(PTOK_SLASH));
23 "(" return(tok(PTOK_LEFT_PAREN));
24 ")" return(tok(PTOK_RIGHT_PAREN));
25 "[" return(tok(PTOK_LEFT_BRACKET));
26 "]" return(tok(PTOK_RIGHT_BRACKET));
27 "=" return(tok(PTOK_EQUAL));
28 "." return(tok(PTOK_DOT));
29 "&" return(tok(PTOK_AMPERSAND));
31 ([0-9]+)|(0x[0-9a-fA-F]+) {
32 yylval->number= strtol(yytext, 0, 0);
33 return(YY_cl_ucsim_parser_CLASS::PTOK_NUMBER);
36 [a-zA-Z_][0-9a-zA-Z_]* return(lexer_obj->check_id(yytext));
54 cl_ucsim_lexer::LexerInput(char *buf, int max_size)
57 return(yyFlexLexer::LexerInput(buf, max_size));
58 int lrem= strlen(string_ptr);
62 strncpy(buf, string_ptr, n);
68 cl_ucsim_lexer::activate_lexer_to_parse_into(void *yylv)
70 yylval= (YY_cl_ucsim_parser_STYPE *)yylv;
74 cl_ucsim_lexer::check_id(char *token)
76 class cl_uc *uc= application->get_uc();
77 //printf("checking id=\"%s\"\n",token);
81 class cl_memory *mem= uc->memory(token);
84 yylval->memory_object= mem;
85 return(tok(PTOK_MEMORY_OBJECT));
89 bool found= uc->symbol2address(yytext, uc->sfr_tbl(), &addr);
92 /*yylval->number= addr;
93 return(tok(PTOK_NUMBER));*/
94 yylval->memory.memory= uc->address_space(MEM_SFR_ID);
95 yylval->memory.address= addr;
96 return(tok(PTOK_MEMORY));
99 found= uc->symbol2address(yytext, uc->bit_tbl(), &addr);
104 yylval->bit.memory= uc->bit2mem(addr, &memaddr, &mask);
105 yylval->bit.mem_address= memaddr;
106 yylval->bit.bit_address= addr;
107 yylval->bit.mask= mask;
108 return(tok(PTOK_BIT));