用于指定值约束的通用语言

g t*_*g t 10 language-agnostic validation arithmetic-expressions

我正在寻找一种定义文本表达式的通用方法,它允许验证值.

例如,我有一个值应该只设置为1,2,3,10,11或12.它的约束可以定义为: (value >= 1 && value <= 3) || (value >= 10 && value <= 12)

或者另一个可以是1,3,5,7,9等的值......会有像value % 2 == 1或那样的约束IsOdd(value).

(为了帮助用户更正无效值,我想显示约束 - 所以描述IsOdd性更好.)

这些约束将在客户端(用户输入之后)和服务器端进行评估.因此,多平台解决方案将是理想的(特别是Win C#/ Linux C++).

是否存在允许评估或解析类似简单表达式的现有语言/项目?

如果没有,我可以从哪里开始创建自己的?

我意识到这个问题有点模糊,因为我不完全确定我追求的是什么.搜索结果没有结果,因此即使某些术语作为起点也会有所帮助.然后我可以相应地更新/标记问题.

Ing*_*ngo 6

您可能想要调查像IdrisAgda这样的依赖类型语言.

这种语言的类型系统允许在类型中编码值约束.无法保证约束的程序根本无法编译.通常的例子是矩阵乘法,其中维度必须匹配.但这就是说依赖类型语言的"hello world",类型系统可以为你做更多的事情.


Flo*_*ker 4

如果您最终开始使用自己的语言,我会尝试尽可能长时间地保持实现独立。寻找合适的编程语言(例如C)的形式表达式语法,并根据需要添加特殊关键字/函数。一旦您对语言有了正式的定义,就可以使用您最喜欢的解析器生成器来实现解析器。

这样,即使您的解析器无法移植到某个平台,您至少也有一个正式的标准来启动单独的解析器实现。