• 大小: 80KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-29
  • 语言: Java
  • 标签: www  

资源简介

对于C#、VB等高级语言而言,此时编译器完成的功能是把源码(SourceCode)编译成通用中间语言(MSIL/CIL)的字节码(ByteCode)。最后运行的时候通过通用语言运行库的转换,编程最终可以被CPU直接计算的机器码(NativeCode)。

资源截图

代码片段和文件信息

import java.io.File;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.HashMap;

public class AnalyseList{

// 成员变量产生式集,终结符集,非终结符集
ArrayList productions;
ArrayList terminals;
ArrayList nonterminals;
HashMap> firsts;
HashMap> follows;

public AnalyseList(){
productions = new ArrayList();
terminals = new ArrayList();
nonterminals = new ArrayList();
firsts = new HashMap>();
follows = new HashMap>();

setProductions();
setNonTerminals();
setTerminals();

getFirst();
getFollow();
getSelect();

Predict();

}

// 从文件中读取产生式
public void setProductions(){
try {
File file = new File(“grammar.txt“);
RandomAccessFile randomfile = new RandomAccessFile(file “r“);
String line;
String left;
String right;
LProduction production;
while ((line=randomfile.readLine())!=null) {
left = line.split(“->“)[0].trim();
right = line.split(“->“)[1].trim();
production = new LProduction(left right.split(“ “));
productions.add(production);
}
randomfile.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}

}

// 获得非终结符集
public void setNonTerminals(){
try {
File file = new File(“grammar.txt“);
RandomAccessFile randomfile = new RandomAccessFile(file “r“);
String line;
String left;
while ((line=randomfile.readLine())!=null) {
left = line.split(“->“)[0].trim();
if(nonterminals.contains(left)){
continue;
}
else {
nonterminals.add(left);
}
}
randomfile.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}

// 获得终结符集依赖于获得产生式函数
public void setTerminals(){
// 遍历所有的产生式
String[] rights;
for (int i = 0; i < productions.size(); i++) {
rights = productions.get(i).returnRights();
// 从右侧寻找终结符
for (int j = 0; j < rights.length; j++) {
if(nonterminals.contains(rights[j])||rights[j].equals(“$“)){
continue;
}
else {
terminals.add(rights[j]);
}
}
}
}

// 获取First集
public void getFirst(){
// 终结符全部求出first集
ArrayList first;
for (int i = 0; i < terminals.size(); i++) {
first = new ArrayList();
first.add(terminals.get(i));
firsts.put(terminals.get(i) first);
}
// 给所有非终结符注册一下
for (int i = 0; i < nonterminals.size(); i++) {
first = new ArrayList();
firsts.put(nonterminals.get(i) first);
}

boolean flag;
while (true) {
flag = true;
String left;
String right;
String[] rights;
for (int i = 0; i < productions.size(); i++) {
left = productions.get(i).returnLeft();
rights = productions.get(i).returnRights();
for (int j = 0; j < rights.length; j++) {
right = rights[j];
// right是否存在,遇到空怎么办
if(!right.equals(“$“)){
for (int l = 0; l < firsts.ge

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-06-24 23:28  semantic\
     文件         295  2015-06-24 23:28  semantic\.classpath
     文件         367  2015-06-24 23:28  semantic\.project
     目录           0  2015-06-24 23:28  semantic\.settings\
     文件          55  2015-06-24 23:28  semantic\.settings\org.eclipse.core.resources.prefs
     文件         587  2015-06-24 23:28  semantic\.settings\org.eclipse.jdt.core.prefs
     目录           0  2018-12-19 19:00  semantic\bin\
     文件        7078  2018-12-19 19:00  semantic\bin\AnalyseList.class
     文件         635  2018-12-19 19:00  semantic\bin\ClientGui.class
     文件         780  2018-12-19 19:00  semantic\bin\ConstantType.class
     文件        3553  2018-12-19 19:00  semantic\bin\ErrorProduction.class
     文件         527  2018-12-19 19:00  semantic\bin\ErrorToken.class
     文件       30453  2018-12-19 19:00  semantic\bin\GrammarComplier.class
     文件         955  2018-12-19 19:00  semantic\bin\Id.class
     文件        8093  2018-12-19 19:00  semantic\bin\Lexframe.class
     文件        3278  2018-12-19 19:00  semantic\bin\LineNumberHeaderView.class
     文件         794  2018-12-19 19:00  semantic\bin\LProduction.class
     文件       12874  2018-12-19 19:00  semantic\bin\MyScanner.class
     文件        1067  2018-12-19 19:00  semantic\bin\Node.class
     文件        5028  2018-12-19 19:00  semantic\bin\Production.class
     文件        2563  2018-12-19 19:00  semantic\bin\SemanticAnalyse.class
     文件        1932  2018-12-19 19:00  semantic\bin\Symbol.class
     文件        2292  2018-12-19 19:00  semantic\bin\SymbolName.class
     文件       10827  2018-12-19 19:00  semantic\bin\TextLex.class
     文件        3479  2018-12-19 19:00  semantic\bin\TextParse.class
     文件        4899  2018-12-19 19:00  semantic\bin\Token.class
     文件        2210  2015-06-24 23:28  semantic\grammar.txt
     文件       10798  2018-12-19 19:41  semantic\predictldy.txt
     文件          88  2015-06-24 23:28  semantic\sample.txt
     目录           0  2015-06-24 23:28  semantic\src\
     文件        8633  2015-06-24 23:28  semantic\src\AnalyseList.java
............此处省略16个文件信息

评论

共有 条评论