ViViScript 構文 注意: ・ []"\ はメタキャラクタである。その文字を表す時はクォートで囲むか \ を前置する ・ [] は省略可能を、[]...は0回以上の繰り返しを表す ・ 英字列は要素名を表す。文字列そのものはダブルクォートで囲む program: [ statement ]... statement: var-definition function-definition [ expression ] ; if-statement for-statement for-in-statement while-statement "break" ; "continue" ; "return" [ expression ] ; { [ statement ]... } var-definition: "var" var-definition-body [ , var-definition-body ]... ; var-definition-body: identifire [ = right-value ] function-definition: "function" identifier ( [ arg-list ] ) { [ statement ]... } arg-list: identifier [ , identifier ]... if-statement: "if" ( expression ) statement [ "else" statement ] for-statement: "for" ( initial-statement expression ; expression ) statement initial-statement: var-definition expression ; for-in-statement: "for" ( identifier "in" identifier ) statement while-statement: "while" ( expression ) statement expression: assign-exp [ , assign-exp ]... assign-exp: right-value unary-exp = assign-exp unary-exp *= assign-exp unary-exp /= assign-exp unary-exp %= assign-exp unary-exp += assign-exp unary-exp -= assign-exp unary-exp <<= assign-exp unary-exp >>= assign-exp unary-exp >>>= assign-exp unary-exp &= assign-exp unary-exp ^= assign-exp unary-exp |= assign-exp right-value: conditional-exp conditional-exp: logical-or-exp logical-or-exp ? conditional-exp : conditional-exp logical-or-exp: logical-and-exp [ || logical-and-exp ]... logical-and-exp: bitwize-or-exp [ & bitwize-or-exp ]... bitwize-or-exp: bitwize-xor-exp [ | bitwize-xor-exp ]... bitwize-xor-exp: bitwize-and-exp [ ^ bitwize-and-exp bitwize-and-exp: equality-exp [ & equality-exp ]... equality-exp: relational-exp [ equality-opr relational-exp ]... equality-opr: == != relational-exp: shift-exp [ relational-opr shift-exp ]... relational-opr: < <= > >= shift-exp: add-sub-exp [ shift-opr add-sub-exp ]... shift-opr: << >> >>> add-sub-exp: mul-div-exp [ add-sub-opr mul-div-exp ]... add-sub-opr: + - mul-div-exp: mul-div-exp [ neg-inc-opr mul-div-exp ]... mul-div-opr: * / % neg-exp: unary-exp ! neg-exp ~ neg-exp - neg-exp unary-exp: postfix-exp ++ unary-exp -- unary-exp postfix-exp: prim-exp postfix-exp ++ postfix-exp -- postfix-exp "[" expression "]" postfix-exp ( [ expression ] ) postfix-exp . identifier prim-exp: literal ( expression ) identifier literal: digits hex-digits string |