2012-02-11 19 views
0

この属性文法の書き方は?正規表現の属性文法

スターでの制作についてはわかりません。

正規表現の文脈自由文法を設計します。これを属性文法とし、開始記号に付けられたアトリビュート文法を、正規の 表現で表される言語(文字列の集合)であるとします。正規表現は、空、記号、2つの正規表現の連結、垂直バーで区切られた2つの正規表現、星の後に続く正規表現、 またはカッコ内の正規表現にすることができます。たとえば、正規表現 'l(l | d)*'に対して、あなたの属性 文法では、lとそれに続くlまたはdの0以上のすべての文字列の(無限の)集合を構築する必要があります。

ありがとうございました。

+0

私の部分の答え:! RE :: = E {RE。 =(RE2):: RE1} =空集合{RE1.set = RE2.set} RE :: = {記号RE.set = {記号}} RE1 :: = RE2 + RE3 {RE1。 set = RE2.set union RE3.set} RE1 :: = RE2 {RE1 = RE2.set} | RE3 :: RE3 :: REA1 :: = RE2 :: {RE1} = RE2.set = RE2.set} – NoviceCai

答えて

0

ヒント:索引セットと索引を含むセット値式を含む一般的な形式のセットunionがあります。 Z {I/Jで

U F(I)

、例えば、有理数の集合は

に等しいI U :それは次のように書かれています| ZでJ、J = 0}

(通常は "黒板太字" で書かれたZは、全ての整数の集合である。)

+0

RE3 :: = RE2 {セット} RE3 :: = RE2 {セット}繰り返すシンボルを選択するには? – NoviceCai