我正在尝试使用ANTLR来创建理解语法是如何工作的。我已经开始玩ANTLR,并创建了一个简单的添加程序。下面是我的简单语法。
grammar addition;
expr: NUMBER PLUS NUMBER;
NUMBER: [0-9]+
PLUS: '+';
SPACE
: ' ' {skip();};
这种语法非常适合像";1+1";。但我试图做的是生成下面的C#代码用于输入";1+1":
var a = 1;
var b = 1;
Console.WriteLine(1+1);
当我研究时,我发现我可以使用字符串模板与ANTLR C#。我试着探索它们,但没有找到太多帮助。文档有点难以理解。有人能告诉我或提供一些研究参考资料吗?通过这些资料,我将能够知道如何使用ANTLR的字符串模板。
从nuget:添加包StringTemplate4
Install-Package StringTemplate4 -Version 4.0.8
一个最小的例子:
public string SumNumbers()
{
//Create string template and enclose variables between <..>
var template = @"
A template for sum (a,b):
a= <a>
b= <b>
Sum = <sum>
";
//Instantiate Template class
var strTemplate = new Template(template);
int a = 5;
int b = 6;
var sum = a + b;
//define variables used by template
strTemplate.Add("a", a);
strTemplate.Add("b", b);
strTemplate.Add("sum", sum);
//render the template
return strTemplate.Render();
}
输出:
和(A,b(的模板:
a=5
b=6
总和=11
您可以在项目站点中找到使用StringTemplate4的详细文档