JavaScript 2.0
正式な記述
字句文法
previousupnext

2003-06-30 (Mon)

JavaScript 2.0 草案の字句構文は LALR(1) 文法で記述される。文法の表記法も見よ。

この文書には Word RTF 版 [英語] もある。

字句解析の開始記号は次のいずれかである。つまり、直前の入力要素が数値であれば NextInputElementnum 、直前の入力要素が数値でなく / であり、それを正規式として解釈していれば NextInputElementre 、また直前の入力要素が数値でなく / であり、それを除算演算子か除算代入演算子として解釈していれば NextInputElementdiv である。

上記に加え、文字列から数値への変換の構文セマンティクスに使う StringNumericLiteralparseFloat 関数の実装の構文セマンティクスに使う StringDecimalLiteral という開始記号がある。

Unicode 文字クラス

UnicodeCharacter  あらゆる Unicode 文字
UnicodeInitialAlphabetic  Unicode 文字データベースでの分類が Lu (uppercase letter)、Ll (lowercase letter)、Lt (titlecase letter)、Lm (modifier letter)、Lo (other letter)、Nl (letter number) のいずれかであるあらゆる文字
UnicodeAlphanumeric  Unicode 文字データベースでの分類が Lu (uppercase letter)、Ll (lowercase letter)、Lt (titlecase letter)、Lm (modifier letter)、Lo (other letter)、Nd (decimal number)、Nl (letter number)、Mn (non-spacing mark)、Mc (combining spacing mark)、Pc (connector punctuation) のいずれかであるあらゆる文字
WhiteSpaceCharacter 
   «TAB» | «VT» | «FF» | «SP» | «u00A0»
|  «u2000» | «u2001» | «u2002» | «u2003» | «u2004» | «u2005» | «u2006» | «u2007»
|  «u2008» | «u2009» | «u200A» | «u200B»
|  «u3000»
LineTerminator  «LF» | «CR» | «u0085» | «u2028» | «u2029»
ASCIIDigit  0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

コメント

LineComment  / / LineCommentCharacters
LineCommentCharacters 
   «empty»
|  LineCommentCharacters NonTerminator
NonTerminator  UnicodeCharacter except LineTerminator
SingleLineBlockComment  / * BlockCommentCharacters * /
BlockCommentCharacters 
   «empty»
|  BlockCommentCharacters NonTerminatorOrSlash
|  PreSlashCharacters /
PreSlashCharacters 
   «empty»
|  BlockCommentCharacters NonTerminatorOrAsteriskOrSlash
|  PreSlashCharacters /
NonTerminatorOrSlash  NonTerminator except /
NonTerminatorOrAsteriskOrSlash  NonTerminator except * | /
MultiLineBlockComment  / * MultiLineBlockCommentCharacters BlockCommentCharacters * /
MultiLineBlockCommentCharacters 
   BlockCommentCharacters LineTerminator
|  MultiLineBlockCommentCharacters BlockCommentCharacters LineTerminator

空白類文字

WhiteSpace 
   «empty»
|  WhiteSpace WhiteSpaceCharacter
|  WhiteSpace SingleLineBlockComment

改行

LineBreak 
   LineTerminator
|  LineComment LineTerminator
|  MultiLineBlockComment
LineBreaks 
   LineBreak
|  LineBreaks WhiteSpace LineBreak

入力要素

  {redivnum}
NextInputElementre  WhiteSpace InputElementre
NextInputElementdiv  WhiteSpace InputElementdiv
NextInputElementnum  [lookahead{ContinuingIdentifierCharacter\}] WhiteSpace InputElementdiv
InputElementre 
   LineBreaks
|  IdentifierOrKeyword
|  Punctuator
|  NumericLiteral
|  StringLiteral
|  RegExpLiteral
|  EndOfInput
InputElementdiv 
   LineBreaks
|  IdentifierOrKeyword
|  Punctuator
|  DivisionPunctuator
|  NumericLiteral
|  StringLiteral
|  EndOfInput
EndOfInput 
   End
|  LineComment End

キーワード及び識別子

IdentifierOrKeyword  IdentifierName
IdentifierName 
   InitialIdentifierCharacterOrEscape
|  NullEscapes InitialIdentifierCharacterOrEscape
|  IdentifierName ContinuingIdentifierCharacterOrEscape
|  IdentifierName NullEscape
NullEscapes 
   NullEscape
|  NullEscapes NullEscape
NullEscape  \ _
InitialIdentifierCharacterOrEscape 
   InitialIdentifierCharacter
|  \ HexEscape
InitialIdentifierCharacter  UnicodeInitialAlphabetic | $ | _
ContinuingIdentifierCharacterOrEscape 
   ContinuingIdentifierCharacter
|  \ HexEscape
ContinuingIdentifierCharacter  UnicodeAlphanumeric | $ | _

区切り文字

Punctuator 
   !
|  ! =
|  ! = =
|  %
|  % =
|  &
|  & &
|  & & =
|  & =
|  (
|  )
|  *
|  * =
|  +
|  + +
|  + =
|  ,
|  -
|  - -
|  - =
|  .
|  . . .
|  :
|  : :
|  ;
|  <
|  < <
|  < < =
|  < =
|  =
|  = =
|  = = =
|  >
|  > =
|  > >
|  > > =
|  > > >
|  > > > =
|  ?
|  [
|  ]
|  ^
|  ^ =
|  ^ ^
|  ^ ^ =
|  {
|  |
|  | =
|  | |
|  | | =
|  }
|  ~
DivisionPunctuator 
   / [lookahead{/*}]
|  / =

数値リテラル

NumericLiteral 
   DecimalLiteralnoLeadingZeros
|  HexIntegerLiteral
|  DecimalLiteralnoLeadingZeros LetterF
|  IntegerLiteral LetterL
|  IntegerLiteral LetterU LetterL
IntegerLiteral 
   DecimalIntegerLiteralnoLeadingZeros
|  HexIntegerLiteral
LetterF  F | f
LetterL  L | l
LetterU  U | u
  {noLeadingZerosallowLeadingZeros}
DecimalLiteral 
   Mantissa
|  Mantissa LetterE SignedInteger
LetterE  E | e
Mantissa 
   DecimalIntegerLiteral
|  DecimalIntegerLiteral .
|  DecimalIntegerLiteral . Fraction
|  . Fraction
DecimalIntegerLiteralnoLeadingZeros 
   0
|  NonZeroDecimalDigits
DecimalIntegerLiteralallowLeadingZeros  DecimalDigits
NonZeroDecimalDigits 
   NonZeroDigit
|  NonZeroDecimalDigits ASCIIDigit
NonZeroDigit  1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Fraction  DecimalDigits
SignedInteger  OptionalSign DecimalDigits
OptionalSign 
   «empty»
|  +
|  -
DecimalDigits 
   ASCIIDigit
|  DecimalDigits ASCIIDigit
HexIntegerLiteral 
   0 LetterX HexDigit
|  HexIntegerLiteral HexDigit
LetterX  X | x
HexDigit  0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | a | b | c | d | e | f

文字列リテラル

  {singledouble}
StringLiteral 
   ' StringCharssingle '
|  " StringCharsdouble "
StringChars 
   «empty»
|  StringChars StringChar
|  StringChars NullEscape
StringChar 
   LiteralStringChar
|  \ StringEscape
LiteralStringCharsingle  UnicodeCharacter except ' | \ | LineTerminator
LiteralStringChardouble  UnicodeCharacter except " | \ | LineTerminator
StringEscape 
   ControlEscape
|  ZeroEscape
|  HexEscape
|  IdentityEscape
IdentityEscape  NonTerminator except _ | UnicodeAlphanumeric
ControlEscape 
   b
|  f
|  n
|  r
|  t
|  v
ZeroEscape  0 [lookahead{ASCIIDigit}]
HexEscape 
   x HexDigit HexDigit
|  u HexDigit HexDigit HexDigit HexDigit
|  U HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit

正規表現リテラル

RegExpLiteral  RegExpBody RegExpFlags
RegExpFlags 
   «empty»
|  RegExpFlags ContinuingIdentifierCharacterOrEscape
|  RegExpFlags NullEscape
RegExpBody  / [lookahead{*}] RegExpChars /
RegExpChars 
   RegExpChar
|  RegExpChars RegExpChar
RegExpChar 
   OrdinaryRegExpChar
|  \ NonTerminator
OrdinaryRegExpChar  NonTerminator except \ | /

文字列から数値への変換

StringNumericLiteral 
   StringWhiteSpace
|  StringWhiteSpace SignedDecimalLiteral StringWhiteSpace
|  StringWhiteSpace OptionalSign HexIntegerLiteral StringWhiteSpace
SignedDecimalLiteral 
   OptionalSign DecimalLiteralallowLeadingZeros
|  OptionalSign I n f i n i t y
|  N a N
StringWhiteSpace 
   «empty»
|  StringWhiteSpace WhiteSpaceOrLineTerminatorChar
WhiteSpaceOrLineTerminatorChar  WhiteSpaceCharacter | LineTerminator

parseFloat 変換

StringDecimalLiteral  StringWhiteSpace SignedDecimalLiteral

Waldemar Horwat
最終更新: 2003年6月30日 (月)
previousupnext