2010-04-21 55 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开始。