标签: whitespace-language

如何用空白语言阅读字符

我很难理解人物阅读在空白中是如何运作的.我能够运行Hello World程序.但现在我尝试从用户只读一个字符,然后在标准输出上打印它.我没有错误,一切编译得很好,但字符不会出现在输出上.我试图稍微调试它,但它在空白中真的很难,我相信它不会打印任何东西,因为我从用户读取的值是0(或null).

这是我如何阅读角色(我相信它是正确的方式)

start          















end
Run Code Online (Sandbox Code Playgroud)

在这里打印的SSCCE(这应该工作,因为它几乎与Hello World项目中的相同.

start           


















end
Run Code Online (Sandbox Code Playgroud)

我使用的是Whitespace 0.3和Haskell Compiler 5.02版

haskell input whitespace-language

22
推荐指数
1
解决办法
509
查看次数

ifeq / ifne JVM操作码总是分支

[TL; DR:以下JVM字节码指令似乎不起作用:

iconst_0
istore 6
...sequential
iinc 6 1
jsr L42
...
; L42
iload 6
ifeq L53 ; Always branches!!!
astore 8
iinc 6 -1
; L53
LDC 100
ISUB     ; ERROR, returnAddress is at the top of the stack
Run Code Online (Sandbox Code Playgroud)

可以在此处找到测试.class (具有稍微复杂的逻辑)。如果您想进一步了解为什么我会看到这些说明,请继续阅读。]

我正在编写针对JVM字节码的Whitespace编译器。尽管是一种深奥的语言,但是Whitespace向堆栈计算机描述了一组有趣的汇编指令,该堆栈计算机很好地映射到了JVM。

空格具有标签,它们都是跳转(goto / jump-if-zero / jump-if-negative)和函数调用的目标。相关说明(由我给定的名称,在规范中以空格,制表符和换行符的组合形式给出)为:

  • mark <label>:为以下说明设置标签
  • jump[-if-neg|-if-zero] <label>:无条件或有条件地跳转到给定标签
  • call <label>:调用标签所指向的函数
  • end <label>:结束功能,返回到调用方。

我的编译器以类的main方法输出整个Whitespace程序。实现call和的最简单方法end是使用JSRRET操作码,用于实现子例程。JSR操作完成后,堆栈将包含一个returnAddress引用,该引用应存储在变量中,以供以后在中使用end

但是,mark …

java jvm java-bytecode-asm whitespace-language

5
推荐指数
1
解决办法
1120
查看次数

什么"复制堆栈顶部项目"在空白语言中意味着什么?

我正在尝试实现Whitespace解释器以获得乐趣,目前我正在学习本教程以学习它的语法.

语法看起来很简单,但我不明白"复制堆栈顶部项目"是什么意思.那是什么意思?是否意味着获得堆栈顶部的值并将其保存到特殊寄存器中?

esoteric-languages whitespace-language

4
推荐指数
1
解决办法
215
查看次数

CTRL + M与Enter相同吗?

所以,我最近进入了Whitespace编程,其中一个字符被列为[LF].不知道这是什么(是的,是的,对我说你想成为一个白痴的人都大喊大叫),我查了一下,在维基百科上发现它可以用CTRL+M(aka ^M)打字.所以,我用了一段时间,但是当我回去看看这篇文章时,它说LF的也CRLF就是"Carriage Return Line Feed",如果我没记错的话.这是否意味着Enter,从技术上讲,"回车"对于换行也同样有效?对不起,如果这是一个愚蠢的问题:T

keyboard whitespace esoteric-languages whitespace-language

2
推荐指数
1
解决办法
592
查看次数