如何解决了解Scala语法规范中的换行符吗?
我对newline token in Scala Syntax Specification感到困惑。
从Scala规范复制:
semi ::= ‘;’ | nl {nl}
Scala是一种面向行的语言,其中的语句可以用分号或换行符终止。如果满足以下三个条件,则Scala源文本中的换行符将被视为特殊标记“ nl”:
- 换行符之前的令牌可以终止一条语句。
- 紧接换行符的令牌可以开始声明。
- 令牌显示在启用换行符的区域中。
可以终止语句的标记为:文字,标识符以及以下定界符和保留字:
this null true false return type <xml-start>
_ ) ] }
可以开始一条语句的标记是所有Scala标记,但以下定界符和保留字除外:
catch else extends finally forSome match
with yield,. ; : = => <- <: <%
>: # [ ) ] }
这是我的问题:
- 对于情况1,我将令牌称为
this
,null
,true
,false
等,以 ts-token ( terminate-statement-token )。在 ts-token 之后启用了换行符吗?
例如,在下面的代码中,第一个\n
不是令牌,第二个\n
是令牌:
// \n
this //\n
...
- 对于情况2,我将除
catch
,else
,extends
等令牌之外的其他令牌称为 bs令牌( begin-statement -令牌)。在 bs-token 之后禁用了换行符吗?
例如,在下面的代码中,第1个和第2个\n
是令牌,第3个和第4个\n
不是令牌:
if (true) // \n
1 // \n
else // \n
2 // \n
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。