如何在 ANTLR 中处理中间有空格的字符串
How to handle strings with spaces in the middle in ANTLR
我想解析文件的以下行并分别识别学生姓名和年龄。
Student Tim Jonh (25)
Student Mack Woo (30)
年龄是一个数字,名字中间可以有也可以没有空格。我为上面的内容创建了以下 ANTLR 语法。
然而,这会将名称解析为多个单词。但我想按原样 "Tim Jonh" 或 "Mack Woo" 中间有空格。也就是说,如果中间有2个空格,它应该按原样读取。
grammar school;
students : (student)* ;
student : 'Student' studentname '(' age ')' ;
studentname : (NAME)+ ;
age : INT ;
NAME : [a-zA-Z]+ ;
INT : [0-9]+ ;
WS : [ \t\r\n]+ -> skip ;
请指教我应该如何更改我的语法。
请考虑这是为问题准备的,将名称作为多个单词读入应用程序将不适用于实际情况。
grammar school;
students : (student)* ;
student : 'Student' studentname '(' age ')' ;
studentname : NAME ;
age : INT ;
NAME : WORD (WS WORD)* ;
fragment WORD : [a-zA-Z]+ ;
INT : [0-9]+ ;
WS : [ \t\r\n]+ -> skip ;
我想解析文件的以下行并分别识别学生姓名和年龄。
Student Tim Jonh (25)
Student Mack Woo (30)
年龄是一个数字,名字中间可以有也可以没有空格。我为上面的内容创建了以下 ANTLR 语法。
然而,这会将名称解析为多个单词。但我想按原样 "Tim Jonh" 或 "Mack Woo" 中间有空格。也就是说,如果中间有2个空格,它应该按原样读取。
grammar school;
students : (student)* ;
student : 'Student' studentname '(' age ')' ;
studentname : (NAME)+ ;
age : INT ;
NAME : [a-zA-Z]+ ;
INT : [0-9]+ ;
WS : [ \t\r\n]+ -> skip ;
请指教我应该如何更改我的语法。
请考虑这是为问题准备的,将名称作为多个单词读入应用程序将不适用于实际情况。
grammar school;
students : (student)* ;
student : 'Student' studentname '(' age ')' ;
studentname : NAME ;
age : INT ;
NAME : WORD (WS WORD)* ;
fragment WORD : [a-zA-Z]+ ;
INT : [0-9]+ ;
WS : [ \t\r\n]+ -> skip ;