作者descent (「雄辩是银,沉默是金」)
看板Programming
标题Re: [问题] 在自制语言中,如何表示函数和物件
时间Mon Apr 24 21:25:17 2017
你目前可以使用变数吗?
ex:
int c;
c=5;
c+3*2;
这需要使用"环境"
ref:
http://descent-incoming.blogspot.tw/2016/07/compiler-4.html
这篇有点错误, 但概念就是那样。
因为得会处理变数, 才能处理函数,
函数的定义 AST ref:
http://descent-incoming.blogspot.tw/2017/02/compiler-26-variable-function.html
抱歉, 贴错, 这是 function call
http://descent-incoming.blogspot.tw/2017/03/compiler-39-function-call-ast.html
最後提供我的学习心得以及购买的书籍
http://descent-incoming.blogspot.tw/2017/01/blog-post.html
物件我就没研究了。
※ 引述《Neisseria (Neisseria)》之铭言:
: 小弟先前没事写一个计算机
: 目前写了 lexer, parser, interpreter
: 有自制的 AST (abstract syntax tree)
: 为了练功,这些功能没依赖 yacc 或其他外部套件
: 有以下功能:
: - 可处理整数和浮点数
: - 简易代数运算,像 (123 + 45)**(5 % 3)
: - 常见数学公式,像指对数、三角函数等
: (直接 call host language 的相关功能)
: 卡在函数 (function) 和物件 (class) 不知道如何表示
: 希望板上各位大大提示一些方向
: 目前先以 interpreter 为目标
: 因 compiler 还牵涉到转机械码的过程
: 目前对小弟来说太硬了
: 先在这里谢过各位大大
--
纸上得来终觉浅,绝知此事要躬行。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 101.15.3.13
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Programming/M.1493040325.A.1E7.html
※ 编辑: descent (101.15.3.13), 04/24/2017 22:40:40
1F:推 Neisseria: 我的有变数,细节在我文章中175.182.114.180 04/24 22:44
2F:推 Neisseria: 之前大大的文我有看一下,蛮有意思的175.182.114.180 04/24 22:55
3F:→ Neisseria: 小弟比较喜欢做 interpreter175.182.114.180 04/24 22:56
4F:→ Neisseria: 因为经 parser 处理後,可根据需求再175.182.114.180 04/24 22:57
5F:→ Neisseria: 进一步做自已想做的事情175.182.114.180 04/24 22:57
6F:→ Neisseria: compiler 就留给高手去玩吧175.182.114.180 04/24 22:57
7F:→ Neisseria: 或许有机会大家可以交流一下 XD175.182.114.180 04/24 22:58
8F:→ descent: 我只是想把编译流程都跑过一次, 101.15.3.13 04/24 23:00
9F:→ descent: 没特别想做什麽 101.15.3.13 04/24 23:01
10F:→ descent: 我现在产生的组合语言说不定还没 101.15.3.13 04/24 23:02
11F:→ descent: interpreter 快, 囧 101.15.3.13 04/24 23:02
※ 编辑: descent (101.15.3.13), 04/24/2017 23:04:26
12F:推 Neisseria: 大大画 AST 的方式很有趣175.182.114.180 04/24 23:07
13F:→ Neisseria: 小弟我都偷懒,直接用 LISP 风格字串175.182.114.180 04/24 23:07
14F:→ Neisseria: 来表示 AST,超方便 der175.182.114.180 04/24 23:07
15F:→ Neisseria: 像 (+ (* 3 2) (/ 7 4))175.182.114.180 04/24 23:08
16F:→ descent: 因为 AST 具象化之後, 才比较容易知道 101.15.3.13 04/25 00:07
17F:→ descent: 自己走到那个 node 101.15.3.13 04/25 00:07
18F:→ descent: 等你有了 function + parameter 後, 101.15.3.13 04/25 00:08
19F:→ descent: 就没那麽容易看了 101.15.3.13 04/25 00:08
20F:→ descent: lisp 一堆括弧的语法真的很难看, 101.15.3.13 04/25 00:12
21F:→ descent: 要排的好看也很难 101.15.3.13 04/25 00:13