使用布尔表达式作为 Xtext 的参数
Using Boolean expressions as arguments on Xtext
我正在尝试在 Xtext 上创建一个语法,它允许将布尔表达式作为参数传递给另一个特殊函数,该函数只获取 个布尔参数(隐含地,没有声明它是布尔类型)。
例如:
someFunction(...){
foo(4>3, a==b)
}
foo(arg1,arg2)
{
//do something with arg1 and arg2
}
你有一个简单的例子来演示如何做吗?
谢谢。
从你的问题来看,你的实际问题是什么不是很清楚。
如果这是关于构建表达式语法:以此为起点
Expression:
OrExpression
;
OrExpression returns Expression:
AndExpression ({OrExpression.left=current} "||" right=AndExpression)*
;
AndExpression returns Expression:
ComparisonExpression ({AndExpression.left=current} "&&" right=ComparisonExpression)*
;
ComparisonExpression returns Expression:
PrimaryExpression ({ComparisonExpression.left=current} operator=("<"|"<="|"=="|">="|">") right=PrimaryExpression)*
;
PrimaryExpression returns Expression:
"(" Expression ")"
| Literal
;
Literal returns Expression:
{Literal} value="true" | "false" | INT
;
查看一些见解https://typefox.io/parsing-expressions-with-xtext
如果这是关于构建类型系统,请查看 http://xsemantics.sourceforge.net/
我正在尝试在 Xtext 上创建一个语法,它允许将布尔表达式作为参数传递给另一个特殊函数,该函数只获取 个布尔参数(隐含地,没有声明它是布尔类型)。
例如:
someFunction(...){
foo(4>3, a==b)
}
foo(arg1,arg2)
{
//do something with arg1 and arg2
}
你有一个简单的例子来演示如何做吗?
谢谢。
从你的问题来看,你的实际问题是什么不是很清楚。
如果这是关于构建表达式语法:以此为起点
Expression:
OrExpression
;
OrExpression returns Expression:
AndExpression ({OrExpression.left=current} "||" right=AndExpression)*
;
AndExpression returns Expression:
ComparisonExpression ({AndExpression.left=current} "&&" right=ComparisonExpression)*
;
ComparisonExpression returns Expression:
PrimaryExpression ({ComparisonExpression.left=current} operator=("<"|"<="|"=="|">="|">") right=PrimaryExpression)*
;
PrimaryExpression returns Expression:
"(" Expression ")"
| Literal
;
Literal returns Expression:
{Literal} value="true" | "false" | INT
;
查看一些见解https://typefox.io/parsing-expressions-with-xtext
如果这是关于构建类型系统,请查看 http://xsemantics.sourceforge.net/