我已经搜索了谷歌寻找答案并向我的讲师提出这个问题,但他还没有回复我,我想继续提供帮助,所以我来到你们这里是一个问题:
我在flex-lexer中有这段代码:
1| "/*" BEGIN(multi_line_comment);
2| <multi_line_comment>[^*]*
3| <multi_line_comment>"*"+[^\*\/]*
4| <multi_line_comment>"*"+"/" BEGIN(INITIAL);
当我接受"/*abc**** * defg*/"
之类的输入时
我的直觉告诉我,启动条件中的代码按1->2->3->4
顺序执行,然后
1后我"abc**** * defg*/"
离开
2后我"**** * defg*/"
离开
3之后我有" * defg*/"
4之后我有" * defg"
""
用于显示空格,它们不用于输入
然而,当我在flex中编译此代码时,它会切断整个输入。因此,我认为只有这样才能执行第二步(1->2->3->3->4
)
a)那么开始条件如何运作?按什么顺序?
b)每一步都重新进行,直到它不合适为止?如果是,那么如果在步骤3步骤2开始适合后,它会回到步骤2还是保持输入不变?
感谢您的回答