我正在尋找一種方法來解析文件的特定部分。例如,讓我們看看:Bison Flex令牌用於讀取每個未定義的令牌
if {$cpf_step == "pre_restruct"} {
create_power_domain -name domain_GPU_SW \
-shutoff_condition "!$mali_pso_condition_pin" \
-instances "$GPU_SW_instances_list"
} else {
create_power_domain -name domain_GPU_SW \
-shutoff_condition "!$mali_pso_condition_pin"
}
我對create_power_domain命令感興趣。我有一個使用不同標記的規則。下面是我使用規則 [編輯]當然,有一些事情前,這種提取物藏漢其他一個create_power_domain命令,我感興趣的解析[/編輯]
file :list_of_statement
;
list_of_statement: statement
| list_of_statement statement
;
statement: power_domain
| T_EVERY_OTHER_THING_I_READ
;
power_domain: K_CREATE_POWERDOMAIN K_NAME K_IDENTIFIER options_list
現在,你可以理解,我想以後只檢查每個電源域是否與語法對應,而我不想關心其他所有內容。
在我的Flex標記生成器,我試過
.* {return T_EVERY_OTHER_THING_I_READ; }
但後來我想起萊克斯嘗試找到最長匹配的正則表達式,這意味着現在一切都將是一個T_EVERY_OTHER_THING_I_READ令牌,我不會找到我的例如K_CREATE_POWERDOMAIN。
我的問題是如何忽略不屬於我感興趣的規則的一部分?
如果你有進一步的問題隨時問。
謝謝
這似乎這樣的伎倆。謝謝。現在我只能將我感興趣的內容考慮在內,我只需要找出如何忽略power_domain之外的某個K_NAME之類的內容。現在我選擇像'statement:power_domain \t | list_of_identifier \t | K_NAME',但我會嘗試簡單地找到如何將每個令牌設置爲T_EVERY_OTHER_THING_I_READ,前提是我沒有找到K_CREATE_POWERDOMAIN!再次感謝您 – djfoxmccloud 2011-05-03 09:54:29
我回到我的標記器上,事實上這條規則不適用於我的其他標記。太多的人被歸類爲T_EVERY_OTHER_THING_I_READ – djfoxmccloud 2011-06-08 12:56:53