我想解析簡單的C++如如何解析簡單的C++ typedef指令?
typedef Class NewNameForClass;
typedef Class::InsideTypedef NewNameForTypedef;
typedef TemplateClass<Arg1,Arg2> AliasForObject;
我已經寫,我想看到在解析中使用的相應語法的typedef指令。
Name <- ('_'|letter)('_'|letter|digit)*
Type <- Name
Type <- Type::Name
Type <- Name Templates
Templates <- '<' Type (',' Type)* '>'
Instruction <- "typedef" Type Name ';'
一旦被解析,所有我會想要做的是產生具有相同信息的XML(但不同奠定了)
什麼是最有效的語言寫這樣的程序? 你怎麼能做到這一點?
編輯:我已經想出了使用升壓精神(它不是完美的,但現在已經足夠好對我來說,至少)
rule<> sep_p = space_p;
rule<> name_p = (ch_p('_')|alpha_p) >> *(ch_p('_')|alpha_p|digit_p);
rule<> type_p = name_p
>> !(*sep_p >>str_p("::") >> *sep_p>> name_p)
>> *(*sep_p >> ch_p('*'))
>> !(*sep_p >> str_p("const"))
>> !(*sep_p >> ch_p('&'));
rule<> templated_type_p = name_p >> *sep_p
>> ch_p('<') >> *sep_p
>> (*sep_p>>type_p>>*sep_p)%ch_p(',')
>> ch_p('>') >> *sep_p;
rule<> typedef_p = *sep_p
>> str_p ("typedef")
>> +sep_p >> (type_p|templated_type_p)
>> +sep_p >> name_p
>> *sep_p >> ch_p(';') >> *sep_p;
rule<> typedef_list_p = *typedef_p;
謝謝,你是絕對正確的,我沒有考慮到名稱空間。我還必須更新語法來添加引用和指針。我不在乎函數指針,所以這應該是一種解脫! :-) 我不知道多個typedef目標是什麼。 – 2009-02-10 15:04:26