0
我知道,措辞不佳的问题不知道还有什么要问。 我似乎总是在错误分支,无论我进入,并不能找出我搞砸了。我使用莱克斯的特殊风味/ YACC称为GPPG这只是设置这一切了与C#Lex Yacc,我应该标记字符文字吗?
这里使用的是我的Ÿ
method : L_METHOD L_VALUE ')' { System.Diagnostics.Debug.WriteLine("Found a method: Name:" + $1.Data); }
| error { System.Diagnostics.Debug.WriteLine("Not valid in this statement context ");/*Throw new exception*/ }
;
这里是我的莱克斯
\'[^']*\' {this.yylval.Data = yytext.Replace("'",""); return (int)Tokens.L_VALUE;}
[a-zA-Z0-9]+\( {this.yylval.Data = yytext; return (int)Tokens.L_METHOD;}
的想法是我应该能够通过 Method('value')
它并且它正确地认识到这是正确的语法
最终计划是要执行使用Method
作为值传递各种参数
我也尝试了几个派生。例如:
method : L_METHOD '(' L_VALUE ')' { System.Diagnostics.Debug.WriteLine("Found a method: Name:" + $1.Data); }
| error { System.Diagnostics.Debug.WriteLine("Not valid in this statement context: ");/*Throw new exception*/ }
;
\'[^']*\' {this.yylval.Data = yytext.Replace("'",""); return (int)Tokens.L_VALUE;}
[a-zA-Z0-9]+ {this.yylval.Data = yytext; return (int)Tokens.L_METHOD;}
非常感谢!我知道它必须是一件非常简单的事情。对于GPPG,它是这样做的: '[()] \t \t \t {return(int)yytext [0]; }'支持特定的字符。 – Beta033 2011-01-06 16:34:53