我正在开发一个解析应用程序,它为ECMAScript文件的文本构建一个符号表。我遇到的问题是在处理带有ParseTreeListener
的标识符时确定我在赋值运算符的右侧或左侧。
这是使用Chris Lambrou's ANTLR grammar,它似乎与ECMAScript specification中的官方语法非常接近。有一个名为leftHandSideExpression
的解析器规则,但这很具有欺骗性,因为它在TestRig GUI中显示时也始终显示在表达式的右侧。
这是一项需要访客模式的任务吗?
欣赏建议。
答案 0 :(得分:1)
leftHandSideExpression
只能出现在以下位置:
assignmentOperator
的左侧。请注意,这也可以 作为右侧,例如y
中的表达式x = y = 3
。x
或x++
中的x--
)。for (... in
声明的初始化部分。要确定您当前是否正在查看赋值表达式的左侧,请检查其父项为LeftHandSideExpressionContext
或{{1}的AssignmentExpressionContext
的当前分析树节点及其父项}。