5 static YY_cl_ucsim_parser_STYPE *yylval;
9 #define tok(x) (YY_cl_ucsim_parser_CLASS::x)
10 #define lexer_obj (dynamic_cast<class cl_ucsim_lexer *>(this))
18 "+" return(tok(PTOK_PLUS));
19 "-" return(tok(PTOK_MINUS));
20 "*" return(tok(PTOK_ASTERIX));
21 "/" return(tok(PTOK_SLASH));
22 "(" return(tok(PTOK_LEFT_PAREN));
23 ")" return(tok(PTOK_RIGHT_PAREN));
24 "[" return(tok(PTOK_LEFT_BRACKET));
25 "]" return(tok(PTOK_RIGHT_BRACKET));
26 "=" return(tok(PTOK_EQUAL));
27 "." return(tok(PTOK_DOT));
28 "&" return(tok(PTOK_AMPERSAND));
30 ([0-9]+)|(0x[0-9a-fA-F]+) {
31 yylval->number= strtol(yytext, 0, 0);
32 return(YY_cl_ucsim_parser_CLASS::PTOK_NUMBER);
35 [a-zA-Z_][0-9a-zA-Z_]* return(lexer_obj->check_id(yytext));
53 cl_ucsim_lexer::LexerInput(char *buf, int max_size)
56 return(yyFlexLexer::LexerInput(buf, max_size));
57 int lrem= strlen(string_ptr);
61 strncpy(buf, string_ptr, n);
67 cl_ucsim_lexer::activate_lexer_to_parse_into(void *yylv)
69 yylval= (YY_cl_ucsim_parser_STYPE *)yylv;
73 cl_ucsim_lexer::check_id(char *token)
75 class cl_uc *uc= application->get_uc();
76 //printf("checking id=\"%s\"\n",token);
80 class cl_memory *mem= uc->memory(token);
83 yylval->memory_object= mem;
84 return(tok(PTOK_MEMORY_OBJECT));
88 bool found= uc->symbol2address(yytext, uc->sfr_tbl(), &addr);
91 /*yylval->number= addr;
92 return(tok(PTOK_NUMBER));*/
93 yylval->memory.memory= uc->address_space(MEM_SFR_ID);
94 yylval->memory.address= addr;
95 return(tok(PTOK_MEMORY));
98 found= uc->symbol2address(yytext, uc->bit_tbl(), &addr);
103 yylval->bit.memory= uc->bit2mem(addr, &memaddr, &mask);
104 yylval->bit.mem_address= memaddr;
105 yylval->bit.bit_address= addr;
106 yylval->bit.mask= mask;
107 return(tok(PTOK_BIT));