컴 파일 원리 - 변수 성명 문 (4)
3088 단어 Java
코드:
Syntax.java
package per.eyuan.compile;
import per.eyuan.util.Action;
import per.eyuan.util.GoTo;
import per.eyuan.util.Id;
import per.eyuan.util.IdTable;
import per.eyuan.util.MyStack;
import per.eyuan.util.TwoItem;
public class Syntax {
// Id idt[];// Id , type
IdTable idt;
TwoItem ti[];//
int ti_flag;// ,
MyStack msStatu=new MyStack();// ,
MyStack msSymble=new MyStack();// ,
MyStack msSmtm=new MyStack();//
Action act=new Action();//Action
GoTo gt=new GoTo();//GoTo
String action;//
boolean succ=false;// ,
String statu="";//
String symble="";//
String state="";//
String semanteme="";//
String syntax[]={"S`->S","S->D;","D->int id","D->float id","D->D,id"};
String synL[]={"X","S","D","D","D"};
String synR[][]={{"S"},{"D",";"},{"int","id"},{"float","id"},{"D",",","id"}};
String vnType;// “ ”
public Syntax() {
super();
init();
}
public void init(){
//
msStatu.push("0");
msSymble.push("#");
msSmtm.push("_");
ti_flag=0;
}
public void analyse(){
System.out.println(" \t\t \t\t \t\t \t\t\t ");
while(!succ){
// , Action
act.setTable(msStatu.getTop(), ti[ti_flag].getItem1());
// Action ,
//action=act.getAction();
action=act.getAction();
perform(action);
}
}
public void perform(String action){
//
if(action.equals("err")){
error();
}
//
else if(action.equals("acc")){
this.succ=true;
output(-1);
}
//
// , , , “ ”
else if(action.charAt(0)=='s'){
int x=Integer.parseInt(action.charAt(1)+"");
output(x);//
msStatu.push(x+"");
msSymble.push(ti[ti_flag].getItem1());
if(ti[ti_flag].getItem1().equals("id"))
msSmtm.push(ti[ti_flag].getItem2());
// msSmtm.push(id[Integer.parseInt(ti[ti_flag].getItem2())].getName());
else
msSmtm.push("_");
ti_flag++;// 0 , , “ ”
}
//
else if(action.charAt(0)=='r'){
int y=Integer.parseInt(action.charAt(1)+"");
output(y);//
int ind=-1;
if(y==2||y==3||y==4)
ind=Integer.parseInt(ti[ti_flag-1].getItem2());
for(int j=0;j
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.