【发布时间】:2022-01-18 18:31:21
【问题描述】:
我正在尝试为 IBM 汇编语言编写解析器,示例如下。
注释行的第一个字符以星*开头,但是有两个问题
-
除了行中的设定点之外,还可以有描述性文字,但不需要星号*。
-
描述性可以/确实包含词法分析器标记,例如 ENTRY 或 INPUT.....
* TYPE. ARG DSECT NXENT DS F some comment text ENTRY NUMBER NMADR DS F some comment text INPUT NAME NAADR DS F some comment text NATYP DS F some comment text NAENT DS F some comment text ORG NATYP some comment text
在我的词法分析器中,我设计了以下内容,绝对可以正常工作:
fragment CommentLine: Star {getCharPositionInLine() == 1}? .*? Nl
;
fragment Star: '*';
fragment Nl: '\r'? '\n' ;
COMMENT_LINE
: CommentLine -> channel (COMMENT)
;
我的问题是如何管理从解析器语法中特定字符位置开始的行 cmets? IE。解析器 -> 名称 DS INT?信??????????
【问题讨论】:
-
汇编源代码是严格基于行的,对,所以我不会在这里使用完整的解析器。而是逐行拆分代码,然后按空格拆分每一行,然后处理各个标记。