C# 如何使用Coco/R解析字符串中嵌套的迷你语法?
我需要帮助构建Coco/R语法以匹配以下内容:C# 如何使用Coco/R解析字符串中嵌套的迷你语法?,c#,parsing,grammar,cocor,C#,Parsing,Grammar,Cocor,我需要帮助构建Coco/R语法以匹配以下内容: // Expects "1+2=3" (String concat. No embedded expression) "1+2="+(1+2) // Expects "1+2=3" (Embedded expression) "1+2=%(1+2)" // Expects "1+2=3" (unlikely, but still valid embedded expression) "%(pow(0,1-1))+%(sqrt(4))=%(10/
// Expects "1+2=3" (String concat. No embedded expression)
"1+2="+(1+2)
// Expects "1+2=3" (Embedded expression)
"1+2=%(1+2)"
// Expects "1+2=3" (unlikely, but still valid embedded expression)
"%(pow(0,1-1))+%(sqrt(4))=%(10/2-2)"
我正在尝试匹配字符串中的嵌入表达式(在%())
这是我目前掌握的语法
它匹配上面所有3个示例。但现在我不知道如何继续
COMPILER FooLang
CHARACTERS
letter = 'a'..'z'.
digit = '0'..'9'.
strChar = ANY - '"'.
TOKENS
ident = letter {letter}.
number = digit {digit}.
string = '"' {strChar} '"'.
PRODUCTIONS
FooLang = expr.
expr = equ.
method = ident '(' [ expr {',' expr} ] ')'.
equ = add { "==" add}.
add = mul { ('+'|'-') mul }.
mul = atom { ('*'|'/') atom }.
atom = number | string | method | '(' expr ')'.
END FooLang.
%()中的语法几乎相同,但有一些不同(即,没有字符串标记)
以下是我到目前为止的发现:
似乎我想要Antlr的“lexer模式”,但对于Coco/R来说。这与C#有什么关系?我希望也许有一个解决方案可以使用Coco/R的语义动作和/或冲突解决程序,这涉及到编写C#代码(我的目标语言)。