资源简介

对文法进行自动分析,生成用于LALR1语法分析器的状态转换表,加上框架代码,构造出LALR1语法分析程序

资源截图

代码片段和文件信息

import java.util.*;

//针对lalr1文法的项目集的核的产生式
public class CoreExFormula {
    public CoreExFormula() {
    }

    public String getLeft() {
        return left;
    }

    public Vector getRight() {
        return right;
    }

    public int getDot_index() {
        return dot_index;
    }

    public int getIndex() {
        return index;
    }

    public Hashtable getAhead() {
        return ahead;
    }

    public void setLeft(String left) {
        this.left = left;
    }

    public void setRight(Vector right) {
        this.right = right;
    }

    public void setDot_index(int dot_index) {
        this.dot_index = dot_index;
    }

    public void setIndex(int index) {
        this.index = index;
    }

    public void setAhead(Hashtable ahead) {
        this.ahead = ahead;
    }

    public void add(String symbol){
        right.add(symbol);
    }

    public String retrieveAccStr(){
        if(dot_index            return (String)right.elementAt(dot_index);//没有进行下届判定
        }
        else
            return null;
    }

    //非终结符后的字符串A,没有加上向前搜索符,A与一个向前搜索符拼接构成一个待解析的串B,多个向前搜索符构成多个串
    //串B的first集的求解,当A为空时,所有的first集直接为ahead;
    //当A不为空,A不能推出null时,所有的first集为A的first集;
    //当A不为空,A能推出null时,所有的first集为A的first集加上ahead
    public Vector retrieveFollowingStr(){
        Vector retvect = new Vector();
        for (int i = dot_index+1; i < right.size(); i++) {
            retvect.add( right.elementAt(i) );//没有进行下届判定
        }
        return retvect;
    }

    //返回搜索符的拼接以空格分开
    public String retrieveAHeadStr(){
        String aheadstr = ““;
        Enumeration en = ahead.keys();
        while (en.hasMoreElements()) {
            aheadstr = aheadstr + “ “ + (String) en.nextElement();
        }
        aheadstr = aheadstr.trim();
        return aheadstr;
    }
    //添加向前搜索符,如果存在,则不添加
    public boolean addAheadStr(String aheadstr){
        if(ahead.get(aheadstr)==null){
            ahead.put(aheadstr aheadstr);
            return true;  //返回真
        }
        return false;  //返回假
    }

    public String retrieveFormlabel(){
        String keystr = left;
        Iterator formiter = right.iterator();
        while (formiter.hasNext()) {
            keystr = keystr + “ “ + formiter.next() ;
        }
        keystr = keystr + “_“ + dot_index;
        keystr = keystr.trim();
        return keystr;
    }

    public String retrieveFormula(){
        String keystr = left;
        Iterator formiter = right.iterator();
        while (formiter.hasNext()) {
            keystr = keystr + “ “ + formiter.next() ;
        }
        keystr = keystr.trim();
        return keystr;
    }

    //接收字符后的key 加上向前搜索符
//    public String getPostAccKey(){
//        String keystr = left;
//        Iterator formiter = right.iterator();
//        while (formiter.hasNext()) {
//            keystr = keystr + “ “ + formiter.next() ;
//      

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        161  2011-06-07 08:40  LALR1\first.txt

     文件        390  2011-06-07 08:40  LALR1\follow.txt

     文件         47  2011-03-09 16:14  LALR1\in-2.txt

     文件         67  2011-03-10 20:06  LALR1\in-3.txt

     文件        131  2011-06-05 11:02  LALR1\in-4.txt

     文件         83  2011-03-04 16:13  LALR1\in.txt

     文件       4391  2011-02-22 19:30  LALR1\LALR1.jpx

     文件         76  2011-03-09 16:11  LALR1\signal-2.txt

     文件         99  2011-03-10 20:07  LALR1\signal-3.txt

     文件        172  2011-06-05 10:34  LALR1\signal-4.txt

     文件        125  2011-03-04 16:14  LALR1\signal.txt

     文件       3814  2011-03-10 19:41  LALR1\src\CoreExFormula.java

     文件       2138  2011-03-10 20:00  LALR1\src\ExFormula.java

     文件        459  2011-02-18 13:29  LALR1\src\FirstFollowConstant.java

     文件        233  2011-02-21 11:24  LALR1\src\FirstLastConstant.java

     文件        809  2011-02-17 10:38  LALR1\src\Formula.java

     文件       2274  2011-02-18 10:25  LALR1\src\graph\GraphSet.java

     文件       2137  2011-02-18 10:27  LALR1\src\graph\simpathvisit\CreateTestPath.java

     文件        789  2011-02-18 10:31  LALR1\src\graph\simpathvisit\DirectGraphNode.java

     文件       7739  2011-02-18 10:26  LALR1\src\graph\simpathvisit\RetriveTestPath.java

     文件        516  2011-02-18 10:25  LALR1\src\graph\simpathvisit\StateData.java

     文件        695  2011-02-18 10:25  LALR1\src\graph\simpathvisit\TestCaseData.java

     文件        948  2011-02-18 10:25  LALR1\src\graph\simpathvisit\TransitionData.java

     文件       2445  2011-02-18 10:30  LALR1\src\graph\simpathvisit\TravelPathNode.java

     目录          0  2011-11-17 14:00  LALR1\src\graph\simpathvisit

     文件       8411  2011-03-01 09:50  LALR1\src\graph\WideFirstTest.java

     目录          0  2011-11-17 14:00  LALR1\src\graph

     文件       4196  2011-03-04 09:02  LALR1\src\HeapSort.java

     文件      78037  2011-06-07 08:40  LALR1\src\main.java

     文件        588  2011-03-02 08:40  LALR1\src\NonTerm.java

............此处省略6个文件信息

评论

共有 条评论