Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- "Name" = 'eAthena Script'
- "Author" = 'GreenBox'
- "Version" = '1.0.0.0'
- "About" = ''
- "Start Symbol" = <Program>
- ! -------------------------------------------------
- ! Character Sets
- ! -------------------------------------------------
- {Hex Digit} = {Digit} + [abcdefABCDEF]
- {Oct Digit} = [01234567]
- {ID Head} = {Letter} + [_]
- {ID Tail} = {Alphanumeric} + [_]
- {String Ch} = {Printable} + {HT} - ["\]
- ! -------------------------------------------------
- ! Terminals
- ! -------------------------------------------------
- FunctionName = {ID Head}{ID Tail}*
- Id = ('' | '@' | '#' | '##' '$') {ID Head}{ID Tail}* ('' | '$')
- StringLiteral = '"'( {String Ch} | '\'{Printable} )* '"'
- DecLiteral = [123456789]{digit}*
- OctLiteral = 0{Oct Digit}*
- HexLiteral = 0x{Hex Digit}+
- FloatLiteral = {Digit}*'.'{Digit}+
- Comment Start = '/*'
- Comment End = '*/'
- Comment Line = '//'
- ! -------------------------------------------------
- ! Rules
- ! -------------------------------------------------
- ! The grammar starts below
- <Program> ::= <Stm List>
- ! ===================================================================
- ! Statements
- ! ===================================================================
- <Stm> ::= Id ':' !Label
- | if '(' <Expr> ')' <Stm>
- | if '(' <Expr> ')' <Then Stm> else <Stm>
- | while '(' <Expr> ')' <Stm>
- | for '(' <Arg> ';' <Arg> ';' <Arg> ')' <Stm>
- | <Normal Stm>
- <Then Stm> ::= if '(' <Expr> ')' <Then Stm> else <Then Stm>
- | while '(' <Expr> ')' <Then Stm>
- | for '(' <Arg> ';' <Arg> ';' <Arg> ')' <Then Stm>
- | <Normal Stm>
- <Normal Stm> ::= do <Stm> while '(' <Expr> ')'
- | switch '(' <Expr> ')' '{' <Case Stms> '}'
- | <Block>
- | goto Id ';'
- | break ';'
- | continue ';'
- | return <Expr> ';'
- | FunctionName <Expr> ';'
- | FunctionName ';'
- | ';' !Null statement
- <Arg> ::= <Expr>
- |
- <Case Stms> ::= case <Value> ':' <Stm List> <Case Stms>
- | default ':' <Stm List>
- |
- <Block> ::= '{' <Stm List> '}'
- <Stm List> ::= <Stm> <Stm List>
- |
- ! -------------------------------------------------
- ! Expressions
- ! -------------------------------------------------
- <Expr> ::= <Expr> ',' <Op If>
- | <Op If>
- <Op If> ::= <Op Or> '?' <Op If> ':' <Op If>
- | <Op Or>
- <Op Or> ::= <Op Or> '||' <Op And>
- | <Op And>
- <Op And> ::= <Op And> '&&' <Op BinOR>
- | <Op BinOR>
- <Op BinOR> ::= <Op BinOr> '|' <Op BinXOR>
- | <Op BinXOR>
- <Op BinXOR> ::= <Op BinXOR> '^' <Op BinAND>
- | <Op BinAND>
- <Op BinAND> ::= <Op BinAND> '&' <Op Equate>
- | <Op Equate>
- <Op Equate> ::= <Op Equate> '==' <Op Compare>
- | <Op Equate> '!=' <Op Compare>
- | <Op Compare>
- <Op Compare> ::= <Op Compare> '<' <Op Shift>
- | <Op Compare> '>' <Op Shift>
- | <Op Compare> '<=' <Op Shift>
- | <Op Compare> '>=' <Op Shift>
- | <Op Shift>
- <Op Shift> ::= <Op Shift> '<<' <Op Add>
- | <Op Shift> '>>' <Op Add>
- | <Op Add>
- <Op Add> ::= <Op Add> '+' <Op Mult>
- | <Op Add> '-' <Op Mult>
- | <Op Mult>
- <Op Mult> ::= <Op Mult> '*' <Op Unary>
- | <Op Mult> '/' <Op Unary>
- | <Op Mult> '%' <Op Unary>
- | <Op Unary>
- <Op Unary> ::= '!' <Op Unary>
- | '~' <Op Unary>
- | '-' <Op Unary>
- | '*' <Op Unary>
- | '&' <Op Unary>
- | <Op Array>
- <Op Array> ::= <Op Array> '[' <Expr> ']'
- | <Value>
- <Value> ::= Id
- | OctLiteral
- | HexLiteral
- | DecLiteral
- | StringLiteral
- | FloatLiteral
- | FunctionName '(' <Expr> ')'
- | FunctionName '(' ')'
- | '(' <Expr> ')'
Add Comment
Please, Sign In to add comment