-
Notifications
You must be signed in to change notification settings - Fork 435
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
扩展DSL开发 #207
Comments
上例去掉注释后即为 十分贴近于人类的描述 |
更好的做法是采用双层架构,核心基于一套英语的语法,上层加一层汉语的包装,兼容多种汉语表达,然后将这样多样的汉语表达编译成底层的基于英语的 DSL。 |
dsl示例:on damaged do qianxun = disallow target(".shunshouqianyang, .lebusishu" ) 牌的种类表达式可沿用成熟的exppattern |
我感觉现在就制定语法规范为时过早…………等开始开发dsl的时候再制定语法规范我感觉时间也足够了,而且要考虑的完全一些,毕竟有些技能不像想像当中那么容易 |
高大上啊 |
@hypercross 大概就是他之前搞的。。 |
唔 其实语法挺不重要的 重要的是语义 |
开发一种合乎技能描述逻辑的基于汉语的神杀扩展语言。
降低diy难度,弱化使用者对底层实现了解程度的硬性要求。
比如,Room属于完全不必要让使用者知道其存在的对象(技能描述里摸牌就是摸牌,不会提到房间。可以用类似 上家.摸牌() 这种更易于理解的方式直观反映描述)。
例:奸雄 {
当 受到伤害时 //syntax:当+时机
你 可以 获得(伤害.牌) // 底层根据不同状况做出“可以”的具体实现,如parser解析到这里只有一处“可以”的描述,所以询问是否发动技能。由于声明主语“你”,所以之后的操作都对之前声明的主语所指对象进行。获得是过程函数,隐藏了Room对象的存在,因为使用者不必意识到它的存在。伤害代指DamageStruct,“受到伤害时”这一时机被声明后,parser负责赋予“伤害”描述DamageStruct的含义。“牌”指DamageStruct::card.
}
关于语言的具体设计,大家可以在回复中讨论。
The text was updated successfully, but these errors were encountered: