@flowscripter/mpeg-sdl-parser
Version:
ISO/IEC 14496-34 Syntactic Description Language (MPEG SDL) parser implemented in TypeScript
139 lines (130 loc) • 3.45 kB
Plain Text
# With braces in clauses
class A {if(i==1){i++;}else if(i==2){i--;}else{j++;}}
==>
Specification(
ClassDeclaration(
class
Whitespace
Identifier
Whitespace
OpenBrace
IfStatement(
if
OpenParenthesis
BinaryExpression(
UnaryExpression(
Identifier
)
RelationalEqual
UnaryExpression(
IntegerLiteral
)
)
CloseParenthesis
CompoundStatement(
OpenBrace
ExpressionStatement(
UnaryExpression(
UnaryExpression(
Identifier
)
PostfixIncrement
)
Semicolon
)
CloseBrace
)
else
Whitespace
IfStatement(
if
OpenParenthesis
BinaryExpression(
UnaryExpression(
Identifier
)
RelationalEqual
UnaryExpression(
IntegerLiteral
)
)
CloseParenthesis
CompoundStatement(
OpenBrace
ExpressionStatement(
UnaryExpression(
UnaryExpression(
Identifier
)
PostfixDecrement
)
Semicolon
)
CloseBrace
)
else
CompoundStatement(
OpenBrace
ExpressionStatement(
UnaryExpression(
UnaryExpression(
Identifier
)
PostfixIncrement
)
Semicolon
)
CloseBrace
)
)
)
CloseBrace
)
)
# No braces and no else if clause
class A {if(i==1)i++;else j++;}
==>
Specification(
ClassDeclaration(
class
Whitespace
Identifier
Whitespace
OpenBrace
IfStatement(
if
OpenParenthesis
BinaryExpression(
UnaryExpression(
Identifier
)
RelationalEqual
UnaryExpression(
IntegerLiteral
)
)
CloseParenthesis
ExpressionStatement(
UnaryExpression(
UnaryExpression(
Identifier
)
PostfixIncrement
)
Semicolon
)
else
Whitespace
ExpressionStatement(
UnaryExpression(
UnaryExpression(
Identifier
)
PostfixIncrement
)
Semicolon
)
)
CloseBrace
)
)