2010-04-21 22 views
1

嗨,我創建了這個小BNF語法,我想模式來實現這個語法轉換成C#代碼

<template>::= <types><editors> 
<types>::= <type>+ 
<type>::= <property>+ 
<property>::= <name><type> 
<editors>::= <editor>+ 
<editor>::= <name><type>(<textfield>|<form>|<list>|<pulldown>)+ 
<textfield>::= <label><property>[<editable>] 
<form>::= <label><property><editor> 
<list>::= <label><property><item-editor> 
<pulldown>::= <label><property><option>+ 
<option>::= <value> 

一個可能的解決方案,我們必須牢記的是創建POCO的是有XMLSerialization的註解命名空間,例如:

[XMLRoot("template")] 
public class Template{ 
    [XMLElement("types")]   
    public Types types{ 

    } 
} 

但是我想探索更多的解決方案,你們覺得怎麼樣?

+0

我沒有看到問題?你想要什麼? – 2010-04-21 15:14:12

+0

夫婦問題: 這種語言的空白規則是什麼? 什麼是終端? 這僅僅是XML嗎? – 2010-04-21 15:14:52

回答

1

如果你想自己實現這個,請看解釋器設計模式。

0

如果您想解析某個複雜度的特定輸入,請使用ANTLR。請參閱C# instructions開始。