Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compiler errors 正在编译的注释中的代码_Compiler Errors_Comments_Smalltalk - Fatal编程技术网

Compiler errors 正在编译的注释中的代码

Compiler errors 正在编译的注释中的代码,compiler-errors,comments,smalltalk,Compiler Errors,Comments,Smalltalk,我试图注释掉作业中的所有代码。然而,当我试图编译时(或者不管发生什么,我真的不知道),有人试图编译引号内的代码。根据我正在使用的书(“On to Smalltalk”-Winston),Smalltalk忽略了最初的双引号,这个双引号和下一个双引号之间的所有字符,最后它也忽略了下一个双引号。为什么这在这里不起作用 我尝试将整个代码放在一组双引号中,结果更糟 我特别使用Smalltalk/X。我只是想得到任何导致评论错误的帮助 我在编译代码时遇到的错误有: =>解析器[错误]:未声明的变量:删除

我试图注释掉作业中的所有代码。然而,当我试图编译时(或者不管发生什么,我真的不知道),有人试图编译引号内的代码。根据我正在使用的书(“On to Smalltalk”-Winston),Smalltalk忽略了最初的双引号,这个双引号和下一个双引号之间的所有字符,最后它也忽略了下一个双引号。为什么这在这里不起作用

我尝试将整个代码放在一组双引号中,结果更糟

我特别使用Smalltalk/X。我只是想得到任何导致评论错误的帮助

我在编译代码时遇到的错误有:

=>解析器[错误]:未声明的变量:删除 在编译/评估未定义对象时 在阅读C:\Users\dis劝阻\Desktop\blank.st时 在第3行或其附近[相对于区块开始]

=>解析器[错误]:未声明的变量:pop 在编译/评估未定义对象时 在阅读C:\Users\dis劝阻\Desktop\blank.st时 在第4行或其附近[相对于区块开始]

=>“[“意外。(缺少“:”或之前的选择器?) 在编译/评估未定义对象时 在阅读C:\Users\dis劝阻\Desktop\blank.st时 在第5行处或附近[相对于区块开始]

=>字符串中输入的意外结束 为>未定义对象编译/评估时 在阅读C:\Users\dis劝阻>\Desktop\blank.st时 在第1行或其附近[相对于区块开始]

守则:

" 
Build a stack based (RPN - Reverse Polish Notation) calculator for rational 
numbers

Smalltalk at: #maxStackSize put: 32

Object subclass: #Stack    
   instanceVariableNames: 'stackArray stackTop'
   classVariableNames: ''
   poolDictionaries: ''
!
Stack class comment: '
   Redundant stack class
'
!

!Stack methodsFor: 'initialize'!

new
   ^ super new.
!

init
   stackArray := Array new: maxStackSize.
   stackTop := -1.
! !
"
"
!Stack class methodsFor: 'manipulating the stack'!
"
"
Removes the top entry from the stack.
pop
   [self empty 
      ifTrue: [
         Transcript
            cr;
            show: 'Stack is EMPTY!';
            cr.]
       ifFalse: [stackTop := stackTop - 1]. 
    ]
 !
"

您正试图使用fileout格式编写Smalltalk代码,该格式用于记录和传输代码,而不是开发。因此,难怪您会感到沮丧。您应该加载IDE并使用浏览器编写代码。Smalltalk IDE是一个非常适合编写、测试和运行的环境

您的文件输出存在一些问题。例如,您不能嵌套注释(“s”)。此外,您缺少尾随句点,有一些不匹配的注释引号,并且在字符串中包含一个!时应将其转义为!!。下面是一个更正的文件输出

但是,最重要的是,加载IDE并使用它。你会发现用IDE做课堂作业会更有趣

" 
Build a stack based (RPN - Reverse Polish Notation) calculator for rational 
numbers
"

Smalltalk at: #maxStackSize put: 32.

Object subclass: #Stack    
   instanceVariableNames: 'stackArray stackTop'
   classVariableNames: ''
   poolDictionaries: ''
!
Stack class comment: '
   Redundant stack class
'
!

!Stack methodsFor: 'initialize'!

new
   ^ super new.
!

init
   stackArray := Array new: maxStackSize.
   stackTop := -1.
! !

!Stack methodsFor: 'manipulating the stack'!

pop
"Removes the top entry from the stack."
   self empty 
      ifTrue: [
         Transcript
            cr;
            show: 'Stack is EMPTY!!';           
            cr.]
       ifFalse: [stackTop := stackTop - 1]. 
!

您正试图使用fileout格式编写Smalltalk代码,该格式用于记录和传输代码,而不是开发。因此,难怪您会感到沮丧。您应该加载IDE并使用浏览器编写代码。Smalltalk IDE是一个非常适合编写、测试和运行的环境

您的文件输出存在一些问题。例如,您不能嵌套注释(“s”)。此外,您缺少尾随句点,有一些不匹配的注释引号,并且在字符串中包含一个!时应将其转义为!!。下面是一个更正的文件输出

但是,最重要的是,加载IDE并使用它。你会发现用IDE做课堂作业会更有趣

" 
Build a stack based (RPN - Reverse Polish Notation) calculator for rational 
numbers
"

Smalltalk at: #maxStackSize put: 32.

Object subclass: #Stack    
   instanceVariableNames: 'stackArray stackTop'
   classVariableNames: ''
   poolDictionaries: ''
!
Stack class comment: '
   Redundant stack class
'
!

!Stack methodsFor: 'initialize'!

new
   ^ super new.
!

init
   stackArray := Array new: maxStackSize.
   stackTop := -1.
! !

!Stack methodsFor: 'manipulating the stack'!

pop
"Removes the top entry from the stack."
   self empty 
      ifTrue: [
         Transcript
            cr;
            show: 'Stack is EMPTY!!';           
            cr.]
       ifFalse: [stackTop := stackTop - 1]. 
!

fileout格式基本上是一种传输格式,它使用未替换的bang(!)作为记录分隔符。“!!”(中间有一个空格)是一个空记录。它们通过双重bang进行转义“!!”-没有空格。当这样的文件被归档时,它首先被拆分为这样的记录(与语言无关),然后由编译器进行分析。 因此,当在一个这样的记录中开始注释并在另一个记录中“结束”注释时,编译器只需要编译半个块,并且会抱怨

实际上,ST/X文档中有一些关于文件输出格式的文档,您应该阅读这些文档

这就是为什么在外部编辑器中编辑chink filout文件是一个坏主意——你必须非常小心,避免重击,不要打破这个记录结构


PS:我明白您的问题所在,因为“stc”编译器(将ST翻译为C)使用此文件输出格式作为输入。但此编译器旨在编译文件输出代码(来自IDE)以用于最终部署,而不是用于开发。

文件输出格式基本上是一种传输格式,它使用未经转换的bang(!)作为记录分隔符。“!!”(中间有一个空格)是一个空记录。它们通过双击“!!”-没有空格来转义。当这样的文件被归档时,它首先被拆分为这样的记录(语言不可知),然后由编译器进行分析。 因此,当在一个这样的记录中开始注释并在另一个记录中“结束”注释时,编译器只需要编译半个块,并且会抱怨

实际上,ST/X文档中有一些关于文件输出格式的文档,您应该阅读这些文档

这就是为什么在外部编辑器中编辑chink filout文件是一个坏主意——你必须非常小心,避免重击,不要打破这个记录结构


PS:我明白你的问题所在,因为“stc”编译器(将ST翻译成C)使用这种文件输出格式作为输入。但是这个编译器是用来编译文件输出代码的(从IDE)用于最终部署,而不是用于开发。

因此,除非代码在没有注释符号的情况下正确编译,否则无法注释掉代码?例如,在Java中,如果我键入System.out.println(“我讨厌Smalltalk”);这是编译的,并且//System.out.println(“我讨厌Smalltalk”);这被视为注释而非编译Smalltalk不以这种方式运行吗?我们也受到SmalltalkX[link]的限制。您完全可以注释掉任何内容,即使是未编译的代码,只要确保正确关闭注释即可。因此,如果您使用双引号注释掉某些内容,请记住,额外的引号会关闭注释,因此请使用双引号重新打开它。这基本上与转义“as”相同“。这与任何语言中的打开/关闭注释没有区别。例如,
/*Y