我正在編寫自己的基於JavaScript的編程語言(是的,這很瘋狂,但它僅供學習... 也許?)。好吧,我閱讀有關解析器和第一遍是將源代碼轉換爲記號,如:構建解析器(第一部分)
if(x > 5)
return true;
標記者到:
T_IF "if"
T_LPAREN "("
T_IDENTIFIER "x"
T_GT ">"
T_NUMBER "5"
T_RPAREN ")"
T_IDENTIFIER "return"
T_TRUE "true"
T_TERMINATOR ";"
我不知道如果我的邏輯是正確的爲那段時間。在我的解析器那就更好了(或不?),並轉化爲它(是的,多維數組):
T_IF "if"
T_EXPRESSION ...
T_IDENTIFIER "x"
T_GT ">"
T_NUMBER "5"
T_CLOSURE ...
T_IDENTIFIER "return"
T_TRUE "true"
我有些疑惑:
- 是我的方式更好或更糟的是原來的方式?請注意,我的代碼將被讀取和編譯(轉換爲另一種語言,如PHP),而不是一直解釋。
- 我使用tokenizer之後,我需要做什麼?我真的失去了這個傳球!
- 有一些很好的教程,瞭解我如何做到這一點?
那麼,是嗎。再見!
嘿,編程語言並不瘋狂。這裏很多人都在做同樣的事情。 – ApprenticeHacker 2012-02-26 11:19:53
你試過龍書嗎?基本上你所謂的傳遞一個是詞法分析階段,其次是實際的語法分析階段 - >理想地輸出某種AST(抽象語法樹),然後你可以語義分析(解析)或轉換成你的目標語言 – stryba 2012-02-26 11:33:18
@IntermediateHacker哈哈...是的,瘋狂的部分對於一個人來說非常複雜。但是,學習是一件非常好的事情,真的。對於專業人士來說,我想這需要一個團隊,所以瘋狂獨自一人。 :p – 2012-02-26 11:33:52