说我有一个代码具有以下形式。一些弹性/野牛问题
display <<"hello">> (number1) (number2) (number3) {
a = 1;
b = 2;
...
}
注意这只是一个例子,虽然是一个丑陋的例子,不过,这只是我想去做的exageration。 number1,number2,number3是数字,显示将是一种操作符,后跟一个包含变量赋值的{}之间的块,并以特殊方式打印整个事物。如上所述,只是一个例子。
我的问题是......说这个语法,display <<str>>()()() {}
表格只与“显示”关键字一起使用,并且从未使用过。假设< <和>>通常是运营商。我想知道......怎么可能告诉野牛/ flex在这种情况下< <和>>不是用作操作符,而只是属于“显示”语法的分隔符?并且,如何正确提取<和<和>>之间的数据,然后使用不同的,特定的语法将整个块解析为{}之间的块。
例如,如果我有:
display <<"hello">> (1) (5) (8) {
a = 1;
b = 8 * 273 + 40;
}
然后,我会想拨打电话这样的:
handle_display_operator(szStr, num1, num2, num3)
// here szStr contains "hello", num1 = 1, num2 = 5, num3 = 8
调用该函数后,我需要解析成块。
有人能解释我如何正确处理这个问题吗?
感谢
感谢您的理解敏捷而快速的回答克里斯。我仍然希望从您的经验中获益。在由显示器处理的块中,假设我想在其中有一个独特的语法。假设我有第二个运算符叫做'struct',它也可以接受struct {block}等块,并且struct语法中的块也有一个独特的语法。我再次展示了这个例子,但我想清楚地理解这个概念。我是否需要制作另一个yyparse()(前缀),还是可以在单个解析器中执行?谢谢! – Yannick