ç¼è¯åç主è¦æ¯è®²äºç¼è¯å¨çå®ç°ã
é£ä»ä¹æ¯ç¼è¯å¨å¢ï¼
ç¼è¯å¨å°±æ¯å° æºç¨åºâç¼è¯å¨ âç®æ æºå¨ä»£ç çç¨åº
æ¬æå°ç¨ä¸æ®µæç®åç代ç è¿è¡è¯´æ
1 + 2 + 3
第ä¸æ¥. è¯æ³åæ
å½ä»£ç ä»æ件ä¸è¢«è¯»å
¥å°ç¼è¾å¨æ¶ï¼å°ä¼è¿è¡è¯æ³åæ
示ä¾ä¸ç代ç æç»ä¼è½¬æ¢ä¸º(ä¸é¢ä¸ºä¼ªä»£ç )
1 ADD 2 ADD 3
第äºæ¥. è¯æ³åæ
è¿ä¸æ¥ç¼è¯å¨å°ä¼æè¯æ³åæçç»æ转æ¢æAST(abstract syntax tree, æ½è±¡è¯æ³æ )
ææçæä½æ°å°ä¼ä½ä¸ºåèç¹ï¼ææçæä½ç¬¦å°ä¼ä½ä¸ºç¶èç¹ã(ä¸ç¥éçåå¦å¯ä»¥çä¸ä¸æ ççæ)
1 + 2 + 3 对åºçæ
3. çæç®æ 代ç
对ä¸é¢çæ è¿è¡ååºéåï¼å°ä¼å¾å°ä¸é¢ç伪代ç
((1 2 +) 3 +)
çæçæ±ç¼ä¼ªä»£ç 为
START:
MOV VALUE, 0//åå§åç»æ为0
ADD VALUE, 1
ADD VALUE, 2//(1 2 +)çæ±ç¼ä¼ªä»£ç
ADD VALUE, 3
RET VALUE
END
æç»æ±ç¼ä»£ç ä¼è¢«ç¼è¯ææºå¨ä»£ç ï¼å¨è®¡ç®æºä¸æ§è¡ã
ä¸é¢ä¸ºä¸è¬æ
åµä¸çç¼è¯æµç¨
1. è¯æ³åæ(çæ代ç 对åºçtokenåºåï¼ä½¿ç¨æ£å表达å¼)
2. è¯æ³åæ(çæAST)
3. è¯ä¹åæ(对代ç çè¯æ³è¿è¡æ£æ¥)
4. 代ç çæ(çæå¯æ§è¡ç代ç )
温馨提示:答案为网友推荐,仅供参考