2010-05-27 34 views
2

我對Flex/Bison非常陌生,所以這是非常有疑問的問題。
如果是的話請原諒我。可能看起來像作業問題 - 但我需要基於以下概念實施項目。野牛輸入分析器 - 關於可選語法和輸入解釋的基本問題

我的問題是有關兩個部分,
問題1
在Bison分析器,我如何提供可選的輸入規則。

像,我需要解析statment
實施例:

-country='USA' -state='INDIANA' -population='100' -ratio='0.5' -comment='Census study for Indiana' 

在這裏,比率令牌可以是可選的。同樣,如果我有許多令牌可選,那麼如何在解析器中爲相同的語法提供語法?

我的代碼看起來像,

%啓動程序
程序:TK_COUNTRY TK_IDENTIFIER TK_STATE TK_IDENTIFIER TK_POPULATION TK_IDENTIFIER ...
,所有的令牌中的詞法分析器定義。由於有許多令牌可選,如果我使用「|」那麼可能會有許多不同的輸入組合方式。

問題2
有很好的機會,評論可能有引號作爲輸入的一部分,所以我加了標記 - 標記,讓用戶可以提供解釋一樣,

例子:

-country='USA' -state='INDIANA' -population='100' -ratio='0.5' -comment='Census study for Indiana$'s population' -tag=$ 

現在,我需要重新解釋印第安納$的印第安納的自-tag=$

請提供任何輸入或相關材料以瞭解這些主題。 感謝您的提前輸入。

回答

1

Q1:我假設我們有4個可能的標記:姓名, ' - ', '=' 和值

然後語法看起來是這樣的:

attrs: 
    attr attrs 
    | attr 
    ; 

attr: 
    '-' NAME '=' VALUE 
    ; 

需要注意的是,不像你使特定的屬性名稱區分標記,無法說「我們必須有國家,州和人口,但比例是可選的」。 這將是分析解析器產生的數據的那部分程序的任務。問題2:我明白這一點,您認爲在解析器運行時改變詞法分析的工作方式。這不是一個好主意,至少不適合初學者。你是否甚至開始考慮詞法分析,而不是解析?

+0

感謝您的意見和建議! – 2010-05-27 16:56:51