【发布时间】:2012-03-16 04:36:26
【问题描述】:
我正在制作自己的基于 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),而不是一直被解释。
- 在我分词器之后,我到底需要做什么?我真的迷路了!
- 有一些很好的教程可以学习如何做到这一点?
嗯,就是这样。再见!
【问题讨论】:
-
嘿,制作编程语言并不疯狂。这里的很多人都在做同样的事情。
-
你试过龙书吗?基本上你所说的第一个阶段是词法分析阶段,然后是实际的句法解析阶段 -> 理想情况下输出某种 AST(抽象语法树),然后您可以对其进行语义分析(解析)或转换为目标语言
-
@IntermediateHacker 哈哈...是的,crazy 部分是对一个人来说非常复杂。但是学习是一件非常好的事情,真的。对于专业用途,我想需要一个团队,所以一个人做是疯狂的。 :p
标签: parsing programming-languages translate