我正在开发一个简单的 C 应用程序,并且我想创建一个 DSL 来定义应用程序的一些行为。这个想法是创建一种非常干净的语言,类似于 Ruby,但它实际上是在 C 中运行的。所有的函数都在 C 中定义,DSL 只是......好吧,一个“隐藏”C 的冗长语法的别名.
我知道 lex 和 yacc,但我认为它们对于我正在尝试做的事情来说太过分了。没有更简单的吗?我考虑过正则表达式,但这样做我会觉得很脏。也许有更好的东西!
一个例子:
if a = b
myFunctionInC()
get 'mydata' then
puts 'Hello!'
很容易翻译成:
if (a == b) {
myFunctionInC();
}
void get(string test)
{
printf('Hello! %s', test);
}