Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @SuppressWarnings("unchecked")
- private Intermediate nItem() {// 項
- Intermediate inter = new Intermediate();
- Intermediate inter1, inter2;
- String tmpResult;
- String operator = "";
- debugPrint("nItem");
- inter1 = nElement();
- while(getTokenName().matches("SSTAR|SDIVD|SMOD|SAND")) {// * div / mod and
- operator = getToken();
- tl++;
- inter2 = nElement();
- debugPrint("type1" + inter1.type);
- debugPrint("type2" + inter2.type);
- if(!inter1.type.equals(inter2.type)) printSemError();
- // tmpにresultを回避
- tmpResult = inter1.getResult();
- // まず作業用変数であれば右辺をスタックに返す
- returnTemp(tmpResult);
- returnTemp(inter2.getResult());
- // 次にResultをスタックから追加
- inter1.setResult(getNewTemp());
- // コードを追加
- inter1.addCodeListList(Arrays.asList(inter2.getCode()));
- inter1.addCodeList(Arrays.asList(inter1.getResult(), ":=", tmpResult, operator, inter2.getResult()));
- }
- inter = inter1;
- return inter;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement