确定ECMAScript赋值表达式的左侧或右侧

时间:2013-04-17 06:10:05

标签: javascript parsing antlr4

我正在开发一个解析应用程序,它为ECMAScript文件的文本构建一个符号表。我遇到的问题是在处理带有ParseTreeListener的标识符时确定我在赋值运算符的右侧或左侧。

这是使用Chris Lambrou's ANTLR grammar,它似乎与ECMAScript specification中的官方语法非常接近。有一个名为leftHandSideExpression的解析器规则,但这很具有欺骗性,因为它在TestRig GUI中显示时也始终显示在表达式的右侧。

这是一项需要访客模式的任务吗?

欣赏建议。

1 个答案:

答案 0 :(得分:1)

leftHandSideExpression只能出现在以下位置:

  • assignmentOperator的左侧。请注意,这也可以 作为右侧,例如y中的表达式x = y = 3
  • 后缀增量/减量运算符的表达式部分(xx++中的x--)。
  • for (... in声明的初始化部分。

要确定您当前是否正在查看赋值表达式的左侧,请检查其父项为LeftHandSideExpressionContext或{{1}的AssignmentExpressionContext的当前分析树节点及其父项}。