将此语法实现为C#代码的模式

时间:2010-04-21 15:11:35

标签: c# design-patterns dsl

嘿伙计们,我正在创建这个小BNF语法,我想

<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>

我们想到的一个可能的解决方案是创建具有XMLSerialization命名空间注释的POCO,例如:

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

    }
}

但是我想探索更多解决方案,你们有什么想法?

2 个答案:

答案 0 :(得分:1)

如果您想自己实现,请查看Interpreter Design Pattern。

答案 1 :(得分:0)

如果要解析某些复杂性的特定输入,请使用ANTLR。请参阅C# instructions开始使用。