转义字符(Special ASCII Characters)
PowerScript中转义字符是以波浪号(~)开头。下图是PowerScript支持的完整的转义字符,#字符表示数字。Decimal由三个十进制数组成,范围是000-255;Hexadecimal由两个十六进制数组成,范围是00-FF;Octal由三个八进制数组成,范围是000-377。
注意:#表示数字是必须的。比如,必须用~007这种样式来表示转义字符,而不能是~7这种样式。
这里是转义字符的词法代码
ESCAPE : '~' ('n'|'t'|'v'|'r'|'f'|'b'|'\"'|'\''|'~') | DecimalEscape | HexEscape | OctalEscape ;fragmentDecimalEscape : '~' ('0'..'1') ('0'..'9') ('0'..'9') // 000 - 199 | '~' '2' ('0'..'5') ('0'..'5') // 200 - 255 ;fragmentHexEscape : '~h' ('0'..'9'|'a'..'f'|'A'..'F') ('0'..'9'|'a'..'f'|'A'..'F') // 00 - FF ;fragmentOctalEscape : '~o' ('0'..'3') ('0'..'7') ('0'..'7') // 000 - 377 ;
续行(Statement Continuation)
通常情况下,PowerScript的一条语句书写在一行上,语句书写完毕后,按Enter键转到下一行,开始下一条语句。有时候,为了阅读方便等原因,需要把一条语句书写在几行上,这时就需要使用续行符了。PowerScript的续行符是&字符,它放在一行的末尾指示下一行是当前行的继续,并且续行符必须是一行的最后一个字符。
CONTINUEDLINE : '&' NEWLINE ;
字符和字符串常量(Character and String Literal)
PowerScript程序中字符和字符串文字常量没有明显的区别。字符文字常量是指由单引号(‘)或双引号(“)括起来的一个ASCII字符,例如:
char c
c = ‘T’
c = “T”
字符串文字常量则是指由单引号(‘)或双引号(“)括起来的不多于1024个的ASCII字符,例如:
string s
s = ‘This is a string’
s = “This is a string”
由于两者没有明显区别,因此在词法分析阶段只能将两者都作为字符串文字常量来处理。至于到底是字符还是字符串文字常量,只有到了语意分析阶段才能作出判断(字符串文字常量支持续行符)。
STRING_LITERAL : ( '\'' (ESCAPE|CONTINUEDLINE|~('~'|'r'|'n'|'\''))* '\'' | '\"' (ESCAPE|CONTINUEDLINE|~('~'|'r'|'n'|'\"'))* '\"' ) { System.out.println("string>" + getText()); } ;
数字和布尔常量(Numeric and Boolean Literal)
INTEGER_LITERAL : ('0'|'1'..'9' ('0'..'9')*) ;FLOAT_LITERAL : ('0'..'9')+ '.' ('0'..'9')* Exponent? | '.' ('0'..'9')+ Exponent? | ('0'..'9')+ Exponent? ;BOOLEAN_LITERAL : ('true'|'false') ;fragmentExponent : ('e'|'E') ('+'|'-')? ('0'..'9')+ ;
标识符(Identifier)
标识符规则可以参看《PowerBuilder标识符versus Java标识符》一文,以下是标识符的词法代码。
IDENTIFIER : Letter (Letter|'0'..'9'|'$'|'#'|'%')* // 暂时不支持短横线(-) { System.out.println("identifier>" + getText()); } ;fragmentLetter : ('A'..'Z'|'a'..'z'|'_') ;
问题:PowerScript是否支持变量名的续行?
PowerBuilder V9.0 Build 5507 不支持
PowerBuilder V9.0.1 Build 7171 不支持
PowerBuilder V8.0.3 Build 9704 不支持
Do not split a line by inserting the continuation character within a variable name. This causes an error and the statement fails.
结论:PowerScript不支持变量名的续行。
联系客服