【发布时间】:2017-11-20 02:59:42
【问题描述】:
这里的编程相对较新,所以如果这是相当基本的,我深表歉意。
我正在尝试将字符串行转换为不同类型的实际变量。 我的输入是以下格式的文件:
double d1, d2 = 3.14, d3;
int a, b = 17, c, g;
global int gInt = 1;
final int fInt = 2;
String s1, s2 = "Still with me?", s3;
此时这些行都是字符串。我希望从字符串中提取变量并接收实际变量,以便我可以使用和操作它们。
到目前为止,我已经尝试过使用正则表达式,但我在这里磕磕绊绊。很想知道这是怎么可能的。 我想制作一个通用的类型格式,例如:
public class IntType{
boolean finalFlag;
boolean globalFlag;
String variableName;
IntType(String variableName, boolean finalFlag, boolean globalFlag){
this.finalflag = finalFlag;
this.globalFlag = globalFlag;
this.variableName = variableName;
}
}
为每个变量类型创建一个新的包装器。
通过使用和操作,我想比较我创建的包装器并检查重复声明等。
但我不知道我是否走在正确的道路上。
注意:忽略不正确的格式(即末尾没有“;”等)
【问题讨论】:
-
我不会对这类事情使用正则表达式,而是会使用专门为这类工作构建的工具,我认为您正在寻找的是词法分析器,尽管我我不确定,因为我不做这项工作。虽然我再次我确定正则表达式不是要走的路。
-
每个字符串行是否遵循可重复的格式?如果是,是哪一个?给出输入的样本。否则,如何知道值是否必须分配给特定类型?例如 double 和 int 都可能适合
2。 -
也许ANTLR 是您正在寻找的。同样,我不是该领域的专家,这就是为什么我没有发布答案而是发表评论。
-
@davidxxx 是的。它遵循声明变量时所期望的格式。但是,每行可能有不同的数量。
-
@HovercraftFullOfEels 更大的问题是我正在尝试制作一个程序来确定某个 sjava 文件是否可以正常运行。这意味着我需要检查变量和方法是否重复创建。变量和方法名称很好,范围正确打开和关闭等')方法很容易,但提取变量及其类型完全是另一回事,这对我来说很难弄清楚。 (sjava 文件声明变量以及“执行” if 和 while 并且能够调用方法)。
标签: java string parsing variables