当我试图用词法分析器和解析器生成器弄湿我的时候,我意识到互联网上的大多数资源(教程,论坛,StackOverflow)只谈论语言。是因为像Flex和Bison这样的工具只适用于语言,还是因为可以解析的任何东西都被认为是一种语言?我应该使用解析器生成器来处理除了语言以外的其他任何东西吗?
更具体地讲,我有以下形式的文件:
File : Bananarama.xyz
Date : 22.12.2017
TableStart
BlockStart
Param1 : 12
Param2 : 1.5
Param3[lbs] : 1539
Param4[cm] : 55
BlockEnd
BlockStart
[...]
BlockEnd
TableEnd
是该文件适用于由LALR解析器解析?
那么,一个块不能包含另一个块,但我简化了一下这个例子。所有的块被一个TableStart/TableEnd对包围(我编辑了这个问题)。但是这并没有改变什么,是吗? – exilit
另一个问题:不要块引入某种上下文敏感性,以便它成为类型1的语言? – exilit
@exilit如果一个块中的符号改变了后面那些块的语法,那就是语法随着符号匹配而改变,这只是上下文敏感的。从你的例子看来并非如此。也许你把语法和数据的语义搞混了。 –