[讨论] 《自制编程语言》集中讨论帖
RednaxelaFX
2014-01-20
Baby's First Garbage Collector,这篇最近的博文所实现的GC与《自制编程语言》所实现的如出一辙。但可以肯定博主没读过这本书。所以说(初级实现)都选择这种实现方式是有其必然性么⋯
|
|
subchen
2014-02-19
看完了,很失望!
1. 很多东西都没讲到重点,也没有循序渐进,直接上代码。 2. 缺乏原理性的东西。 3. 翻译的很烂。 完全不如《language_implementation_patterns》 这本书。 |
|
erdas_zhuang
2014-05-05
两个问题请教, thanks.
1)我在编译crowbar_book_0_1的时候没有问题,不过在执行自带的测试用例的时候出错了。有人知道是什么问题吗? D:\DIY-programming-language\win_sjis\crowbar_book_0_1>crowbar.exe test/test.crb 5:¦¦¦¦?¦¦¦?¦(0x0d) 2)本来想导到eclipse下调试,去查问题1),结果发现在eclipse下面没法通过编译,any suggestion ? /cygdrive/d/eclipse-cpp-kepler-SR2-win32-workspace/DIY_crowbar_0_1/Debug/../error.c:242: undefined reference to `yytext' /cygdrive/d/eclipse-cpp-kepler-SR2-win32-workspace/DIY_crowbar_0_1/Debug/../error.c:245: undefined reference to `yytext' ./interface.o: In function `CRB_compile': /cygdrive/d/eclipse-cpp-kepler-SR2-win32-workspace/DIY_crowbar_0_1/Debug/../interface.c:46: undefined reference to `yyin' /cygdrive/d/eclipse-cpp-kepler-SR2-win32-workspace/DIY_crowbar_0_1/Debug/../interface.c:47: undefined reference to `yyparse' collect2: error: ld returned 1 exit status make: *** [DIY_crowbar_0_1.exe] Error 1 makefile:31: recipe for target 'DIY_crowbar_0_1.exe' failed |
|
erdas_zhuang
2014-05-05
Sorry, my question is not a good one, it might be related to linking issue. I will do some research first.
|
|
budao
2014-05-09
哎,还是好好看书吧
|
|
喻红叶
2014-10-13
我目前准备看这本书,希望能完整的实现一门编程语言,这样更利于理解Java吧。既然R大说这本书关于编译原理的东西讲的很少,有没有比较好的编译原理书推荐(大学时上过编译原理课,都已经忘完了)?
|
|
friddle
2015-06-10
logical_or_expression : logical_and_expression | logical_or_expression LOGICAL_OR logical_and_expression { $$ = crb_create_binary_expression(LOGICAL_OR_EXPRESSION, $1, $3); } ; logical_and_expression : equality_expression | logical_and_expression LOGICAL_AND equality_expression { $$ = crb_create_binary_expression(LOGICAL_AND_EXPRESSION, $1, $3); } ; 有点看不太懂这个逻辑。 与跟或的逻辑应该是并列的表达式吧。怎么会出现有包含关系。 新手求解释。 |
|
a596620989
2015-06-16
friddle 写道 logical_or_expression
: logical_and_expression | logical_or_expression LOGICAL_OR logical_and_expression { $$ = crb_create_binary_expression(LOGICAL_OR_EXPRESSION, $1, $3); } ; logical_and_expression : equality_expression | logical_and_expression LOGICAL_AND equality_expression { $$ = crb_create_binary_expression(LOGICAL_AND_EXPRESSION, $1, $3); 依我之见,这个是为了实现运算符优先级,即&&的优先级高于||. 实现思路跟计算器的add和mul一致。 |
|
friddle
2015-06-16
a596620989 写道 friddle 写道 logical_or_expression
: logical_and_expression | logical_or_expression LOGICAL_OR logical_and_expression { $$ = crb_create_binary_expression(LOGICAL_OR_EXPRESSION, $1, $3); } ; logical_and_expression : equality_expression | logical_and_expression LOGICAL_AND equality_expression { $$ = crb_create_binary_expression(LOGICAL_AND_EXPRESSION, $1, $3); 依我之见,这个是为了实现运算符优先级,即&&的优先级高于||. 实现思路跟计算器的add和mul一致。 我开始认为&&和||优先级是一样的。后来我查了一下C语言的发现我自己的认识错了。非常感谢。 但是我又有第二个问题 我写的crowbar上的一段测试代码: function test_if() { gtest=1; if(gtest==2) { print("gtest is 1\n"); } elsif(gtest==1) { print("test output\n"); } elsif(gtest==1) { print("test output\n"); } } test_if(); 这个连续输出两次test output。是不是属于crowbar的实现bug。 具体的实现我看过了。到推出这个测试案列的。 |
|
jiewo
2015-09-17
一直使用java。到yacc、lex部分的确有些吃力。
|