![]() |
1
3
我不会在每次击键后解析,但会解析整个文件。这对于我创建的特定于域的语言中的中等大小的文件非常有效。我没有尝试只解析文件的一部分,而是使用混合方法,在三个条件中的第一个条件存在时进行解析:
底线是,你可能会惊讶于人们在输入任何强加语法的东西时花了多少时间停顿和思考。当用户思考时,可以利用这些暂停来做有用的工作,即使是400毫秒。由于语法原因,我在为工作而创建的DSL中使用了#1和#2。 n n 字符。我发现这样的组合方法在IDE类型的环境中效果很好。 要记住的一点是,如果这样做,在发现语法错误时不要弄乱文本控件的插入点,因为错误在键入时是不可避免的。我只是在标签中显示一条消息:
|
![]() |
2
1
@JLH基本上也说明了我正在使用的方法,但我想补充一些您可能需要注意的事情:
您可以在 source code 我的(虽然它是用java编写的,但原理应该是一样的)。 |
![]() |
George S. · 是否存在基于元组的控制流语句内部表示? 7 年前 |
![]() |
FlatAssembler · 在x86程序集中计算exp(x) 7 年前 |
![]() |
cib · 即时编译和动态编译有什么区别? 7 年前 |
![]() |
Artemis · 寄存器与指令之间的差异 7 年前 |
![]() |
Sam · 了解go工具编译和链接命令 7 年前 |