ANTLR:多输入
ANTLR: Multiple Inputs
我正在尝试将 ANTLR 用于属性语法。这是我的 driver 代码:
import org.antlr.runtime.ANTLRStringStream;
import org.antlr.v4.runtime.ANTLRFileStream;
import org.antlr.v4.runtime.ANTLRInputStream;
import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.CommonTokenStream;
@SuppressWarnings({ "deprecation", "unused" })
public class mymain {
public static void main(String[] args) {
try {
ANTLRInputStream input = new ANTLRFileStream("/home/vkmanojk/eclipse-workspace/17040/src/input");
statementLexer lexer = new statementLexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
statementParser parser = new statementParser(tokens);
System.out.println(parser.expression());
} catch(Exception e) {
System.out.println(e);
}
}
}
此程序仅适用于 input 文件中的单个输入。如何更改主函数,使其适用于 input 文件中的多个输入?
提前致谢
如果您的输入文件包含多个 expression
s,只需添加一个匹配 1 个或多个 expression
s 的解析器规则:
expressions
: expression ( DELIMITER expression )*
;
// Your existing expression rule
expression
: ...
;
DELIMITER
: '\r'? '\n'
;
如果您的表达式由换行符以外的其他内容分隔,当然,请相应地更改 DELIMITER
。
我正在尝试将 ANTLR 用于属性语法。这是我的 driver 代码:
import org.antlr.runtime.ANTLRStringStream;
import org.antlr.v4.runtime.ANTLRFileStream;
import org.antlr.v4.runtime.ANTLRInputStream;
import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.CommonTokenStream;
@SuppressWarnings({ "deprecation", "unused" })
public class mymain {
public static void main(String[] args) {
try {
ANTLRInputStream input = new ANTLRFileStream("/home/vkmanojk/eclipse-workspace/17040/src/input");
statementLexer lexer = new statementLexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
statementParser parser = new statementParser(tokens);
System.out.println(parser.expression());
} catch(Exception e) {
System.out.println(e);
}
}
}
此程序仅适用于 input 文件中的单个输入。如何更改主函数,使其适用于 input 文件中的多个输入?
提前致谢
如果您的输入文件包含多个 expression
s,只需添加一个匹配 1 个或多个 expression
s 的解析器规则:
expressions
: expression ( DELIMITER expression )*
;
// Your existing expression rule
expression
: ...
;
DELIMITER
: '\r'? '\n'
;
如果您的表达式由换行符以外的其他内容分隔,当然,请相应地更改 DELIMITER
。