Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
antlr4 python:listener在解析json时不会显示所有内容_Python_Json_Antlr_Antlr4 - Fatal编程技术网

antlr4 python:listener在解析json时不会显示所有内容

antlr4 python:listener在解析json时不会显示所有内容,python,json,antlr,antlr4,Python,Json,Antlr,Antlr4,我使用的是g4 json语法,如下所示: 下面是来自Wikipedia的json示例,我想使用上面的语法对其进行解析: to_parse = r''' { "firstName": "John", "lastName": "Smith", "isAlive": true, "age": 27, "address": { "streetAddress": "21 2nd Street", "city": "New York", "state": "NY"

我使用的是g4 json语法,如下所示:

下面是来自Wikipedia的json示例,我想使用上面的语法对其进行解析:

to_parse = r'''
{
  "firstName": "John",
  "lastName": "Smith",
  "isAlive": true,
  "age": 27,
  "address": {
    "streetAddress": "21 2nd Street",
    "city": "New York",
    "state": "NY",
    "postalCode": "10021-3100"
  },
  "phoneNumbers": [
    {
      "type": "home",
      "number": "212 555-1234"
    },
    {
      "type": "office",
      "number": "646 555-4567"
    },
    {
      "type": "mobile",
      "number": "123 456-7890"
    }
  ],
  "children": [],
  "spouse": null
}
'''
在生成lexer[lexer_类]、parser[parser_类]和listener[listener_类]之后,我正在使用antlr4 python运行时:

仅输出:

enterJson
enterValue
exitValue
exitJson
我的代码不显示任何数组,obj,这正常吗

[编辑]

我正在使用以下命令生成*.py文件lexer、parser和listener:

java -cp antlr-4.7.2-complete.jar org.antlr.v4.Tool -o ./generation -Dlanguage=Python3 JSON.g4

我无法复制。当我根据您发布的语法生成类,然后运行以下脚本时:

从antlr4进口* 从JSONLexer导入JSONLexer作为lexer_类 从JSONParser导入JSONParser作为parser_类 从JSONListener将JSONListener作为侦听器类导入 类MyListenerlistener\u类: def enterJsonself,ctx: printenterJson def exitJsonself,ctx: printexitJson def-CENTORBJSELF,ctx: printenterObj def exitObjself,ctx: printexitObj def enterPairself,ctx: 打印输入对 def exitPairself,ctx: printexitPair def enterArrayself,ctx: printenterArray def exitArrayself,ctx: 印刷体 def enterValueself,ctx: 打印输入值 def exitValueself,ctx: 打印输出值 to_parse=r' { 名字:约翰, 姓:史密斯, 伊莎莉:没错, 年龄:27岁, 地址:{ 街道地址:第二街21号, 城市:纽约, 州:纽约, 邮政编码:10021-3100 }, 电话号码:[ { 类型:home,, 电话:212 555-1234 }, { 类型:办公室, 电话:646555-4567 }, { 类型:流动电话,, 电话:123456-7890 } ], 儿童:[], 配偶:无效 } ' input\u stream=InputStreamto\u parse lexer=lexer\u classinput\u流 令牌流=CommonTokenStreamlexer 解析器=解析器\u类令牌\u流 tree=parser.json 我的听众=我的听众 步行者 沃克,沃克,我的听众,树 以下内容打印到我的控制台:

enterJson
enterValue
enterObj
enterPair
enterValue
exitValue
exitPair
enterPair
enterValue
exitValue
exitPair
enterPair
enterValue
exitValue
exitPair
enterPair
enterValue
exitValue
exitPair
enterPair
enterValue
enterObj
enterPair
enterValue
exitValue
exitPair
enterPair
enterValue
exitValue
exitPair
enterPair
enterValue
exitValue
exitPair
enterPair
enterValue
exitValue
exitPair
exitObj
exitValue
exitPair
enterPair
enterValue
enterArray
enterValue
enterObj
enterPair
enterValue
exitValue
exitPair
enterPair
enterValue
exitValue
exitPair
exitObj
exitValue
enterValue
enterObj
enterPair
enterValue
exitValue
exitPair
enterPair
enterValue
exitValue
exitPair
exitObj
exitValue
enterValue
enterObj
enterPair
enterValue
exitValue
exitPair
enterPair
enterValue
exitValue
exitPair
exitObj
exitValue
exitArray
exitValue
exitPair
enterPair
enterValue
enterArray
exitArray
exitValue
exitPair
enterPair
enterValue
exitValue
exitPair
exitObj
exitValue
exitJson

对于相同的输入,testrig显示了什么?
java -cp antlr-4.7.2-complete.jar org.antlr.v4.Tool -o ./generation -Dlanguage=Python3 JSON.g4
enterJson
enterValue
enterObj
enterPair
enterValue
exitValue
exitPair
enterPair
enterValue
exitValue
exitPair
enterPair
enterValue
exitValue
exitPair
enterPair
enterValue
exitValue
exitPair
enterPair
enterValue
enterObj
enterPair
enterValue
exitValue
exitPair
enterPair
enterValue
exitValue
exitPair
enterPair
enterValue
exitValue
exitPair
enterPair
enterValue
exitValue
exitPair
exitObj
exitValue
exitPair
enterPair
enterValue
enterArray
enterValue
enterObj
enterPair
enterValue
exitValue
exitPair
enterPair
enterValue
exitValue
exitPair
exitObj
exitValue
enterValue
enterObj
enterPair
enterValue
exitValue
exitPair
enterPair
enterValue
exitValue
exitPair
exitObj
exitValue
enterValue
enterObj
enterPair
enterValue
exitValue
exitPair
enterPair
enterValue
exitValue
exitPair
exitObj
exitValue
exitArray
exitValue
exitPair
enterPair
enterValue
enterArray
exitArray
exitValue
exitPair
enterPair
enterValue
exitValue
exitPair
exitObj
exitValue
exitJson