Ich weiß, schlecht formulierte Frage nicht sicher, wie sonst zu fragen. Ich scheine immer im Fehlerzweig zu enden, egal was ich betrete und kann nicht herausfinden, wo ich das vermassele. Ich bin ein besonderen Geschmack von Lex mit/YACC genannt GPPG, die gerade diese für den Einsatz alle einrichtet mit C#Lex Yacc, sollte ich Zeichenliterale in Tokens setzen?
Hier ist meine Y
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*/ }
;
hier ist meine Lex
\'[^']*\' {this.yylval.Data = yytext.Replace("'",""); return (int)Tokens.L_VALUE;}
[a-zA-Z0-9]+\( {this.yylval.Data = yytext; return (int)Tokens.L_METHOD;}
Die Idee ist, dass ich in der Lage sein, Method('value')
daran zu übergeben und es richtig erkennen, dass dies die richtige Syntax ist
schließlich ist der Plan zu exec ute die Method
Übergabe der verschiedenen Parameter als Werte
Ich habe auch mehrere Ableitungen ausprobiert. zum Beispiel:
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;}
vielen dank! Ich wusste, dass es etwas blendend einfaches sein musste. Für GPPG ist es so gemacht: '[()] \t \t \t {return (int) yytext [0]; } 'um bestimmte Zeichen zu unterstützen. – Beta033