# Hello World YOU WON'T WANT TO MISS 'Hello, World!' PLEASE LIKE AND SUBSCRIBE ==> Program( ExprStatement(PrintStatement(StringLiteral)), ProgramEnd ) # Number literals 123 45.67 PLEASE LIKE AND SUBSCRIBE ==> Program( ExprStatement(NumberLiteral), ExprStatement(NumberLiteral), ProgramEnd ) # String literals "hello" 'world' "escaped \"quote\"" PLEASE LIKE AND SUBSCRIBE ==> Program( ExprStatement(StringLiteral), ExprStatement(StringLiteral), ExprStatement(StringLiteral), ProgramEnd ) # Booleans TOTALLY RIGHT COMPLETELY WRONG PLEASE LIKE AND SUBSCRIBE ==> Program( ExprStatement(BooleanLiteral), ExprStatement(BooleanLiteral), ProgramEnd ) # Identifiers FOO BAR-BAZ TEST_123 FOO'S PLEASE LIKE AND SUBSCRIBE ==> Program( ExprStatement(Identifier), ExprStatement(Identifier), ExprStatement(Identifier), ExprStatement(Identifier), ProgramEnd ) # Assignment EXPERTS CLAIM X TO BE 42 EXPERTS CLAIM NAME TO BE "John" PLEASE LIKE AND SUBSCRIBE ==> Program( Assignment(Identifier, NumberLiteral), Assignment(Identifier, StringLiteral), ProgramEnd ) # Binary operations - arithmetic EXPERTS CLAIM SUM TO BE 1 PLUS 2 EXPERTS CLAIM DIFF TO BE 10 MINUS 5 EXPERTS CLAIM PRODUCT TO BE 3 TIMES 4 EXPERTS CLAIM QUOTIENT TO BE 20 DIVIDED BY 5 EXPERTS CLAIM REMAINDER TO BE 10 MODULO 3 PLEASE LIKE AND SUBSCRIBE ==> Program( Assignment(Identifier, BinaryExpression(NumberLiteral, NumberLiteral)), Assignment(Identifier, BinaryExpression(NumberLiteral, NumberLiteral)), Assignment(Identifier, BinaryExpression(NumberLiteral, NumberLiteral)), Assignment(Identifier, BinaryExpression(NumberLiteral, NumberLiteral)), Assignment(Identifier, BinaryExpression(NumberLiteral, NumberLiteral)), ProgramEnd ) # Binary operations - comparison EXPERTS CLAIM EQ TO BE 1 IS ACTUALLY 1 EXPERTS CLAIM GT TO BE 5 BEATS 3 EXPERTS CLAIM LT TO BE 2 SMALLER THAN 10 PLEASE LIKE AND SUBSCRIBE ==> Program( Assignment(Identifier, BinaryExpression(NumberLiteral, NumberLiteral)), Assignment(Identifier, BinaryExpression(NumberLiteral, NumberLiteral)), Assignment(Identifier, BinaryExpression(NumberLiteral, NumberLiteral)), ProgramEnd ) # Binary operations - logical EXPERTS CLAIM BOTH TO BE TOTALLY RIGHT AND TOTALLY RIGHT EXPERTS CLAIM EITHER TO BE TOTALLY RIGHT OR COMPLETELY WRONG PLEASE LIKE AND SUBSCRIBE ==> Program( Assignment(Identifier, BinaryExpression(BooleanLiteral, BooleanLiteral)), Assignment(Identifier, BinaryExpression(BooleanLiteral, BooleanLiteral)), ProgramEnd ) # Function declaration without arguments DISCOVER HOW TO GREET YOU WON'T WANT TO MISS "Hello!" PLEASE LIKE AND SUBSCRIBE ==> Program( FunctionDecl( Identifier, ExprStatement(PrintStatement(StringLiteral)) ), ProgramEnd ) # Function declaration with arguments DISCOVER HOW TO ADD WITH A, B SHOCKING DEVELOPMENT A PLUS B PLEASE LIKE AND SUBSCRIBE ==> Program( FunctionDecl( Identifier, ArgumentList(Identifier, Identifier), ReturnStatement(BinaryExpression(Identifier, Identifier)) ), ProgramEnd ) # Function call EXPERTS CLAIM RESULT TO BE ADD OF 1, 2 PLEASE LIKE AND SUBSCRIBE ==> Program( Assignment( Identifier, FunctionCall(Identifier, ArgumentExpression(NumberLiteral), ArgumentExpression(NumberLiteral)) ), ProgramEnd ) # Block with RUMOR HAS IT RUMOR HAS IT EXPERTS CLAIM X TO BE 1 EXPERTS CLAIM Y TO BE 2 YOU WON'T WANT TO MISS X PLUS Y END OF STORY PLEASE LIKE AND SUBSCRIBE ==> Program( Block( Assignment(Identifier, NumberLiteral), Assignment(Identifier, NumberLiteral), ExprStatement(PrintStatement(BinaryExpression(Identifier, Identifier))) ), ProgramEnd ) # If statement without else WHAT IF X BEATS 0 YOU WON'T WANT TO MISS "positive" PLEASE LIKE AND SUBSCRIBE ==> Program( IfStatement( BinaryExpression(Identifier, NumberLiteral), ExprStatement(PrintStatement(StringLiteral)) ), ProgramEnd ) # If statement with else WHAT IF X IS ACTUALLY 0 YOU WON'T WANT TO MISS "zero" LIES! YOU WON'T WANT TO MISS "not zero" PLEASE LIKE AND SUBSCRIBE ==> Program( IfStatement( BinaryExpression(Identifier, NumberLiteral), ExprStatement(PrintStatement(StringLiteral)), ExprStatement(PrintStatement(StringLiteral)) ), ProgramEnd ) # Input statement EXPERTS CLAIM NAME TO BE LATEST NEWS ON "Enter your name" PLEASE LIKE AND SUBSCRIBE ==> Program( Assignment( Identifier, InputStatement(StringLiteral) ), ProgramEnd ) # Factorial function DISCOVER HOW TO FACTORIAL WITH N RUMOR HAS IT WHAT IF N IS ACTUALLY 0 SHOCKING DEVELOPMENT 1 LIES! SHOCKING DEVELOPMENT N TIMES FACTORIAL OF N MINUS 1 END OF STORY EXPERTS CLAIM RESULT TO BE FACTORIAL OF 10 YOU WON'T WANT TO MISS 'Result is' YOU WON'T WANT TO MISS RESULT PLEASE LIKE AND SUBSCRIBE ==> Program( FunctionDecl( Identifier, ArgumentList(Identifier), Block( IfStatement( BinaryExpression(Identifier, NumberLiteral), ReturnStatement(NumberLiteral), ReturnStatement( BinaryExpression( Identifier, FunctionCall( Identifier, ArgumentExpression(BinaryExpression(Identifier, NumberLiteral)) ) ) ) ) ) ), Assignment(Identifier, FunctionCall(Identifier, ArgumentExpression(NumberLiteral))), ExprStatement(PrintStatement(StringLiteral)), ExprStatement(PrintStatement(Identifier)), ProgramEnd ) # Fibonacci function DISCOVER HOW TO FIBONACCI WITH A, B, N RUMOR HAS IT WHAT IF N SMALLER THAN 1 SHOCKING DEVELOPMENT B LIES! RUMOR HAS IT YOU WON'T WANT TO MISS B SHOCKING DEVELOPMENT FIBONACCI OF B, A PLUS B, N MINUS 1 END OF STORY END OF STORY EXPERTS CLAIM LIMIT TO BE 10 YOU WON'T WANT TO MISS 'First 10 Fibonacci numbers' EXPERTS CLAIM NOTHING TO BE FIBONACCI OF 0, 1, LIMIT PLEASE LIKE AND SUBSCRIBE ==> Program( FunctionDecl( Identifier, ArgumentList(Identifier, Identifier, Identifier), Block( IfStatement( BinaryExpression(Identifier, NumberLiteral), ReturnStatement(Identifier), Block( ExprStatement(PrintStatement(Identifier)), ReturnStatement( FunctionCall( Identifier, ArgumentExpression(Identifier), ArgumentExpression(BinaryExpression(Identifier, Identifier)), ArgumentExpression(BinaryExpression(Identifier, NumberLiteral)) ) ) ) ) ) ), Assignment(Identifier, NumberLiteral), ExprStatement(PrintStatement(StringLiteral)), Assignment( Identifier, FunctionCall( Identifier, ArgumentExpression(NumberLiteral), ArgumentExpression(NumberLiteral), ArgumentExpression(Identifier) ) ), ProgramEnd ) # Parenthesized expression EXPERTS CLAIM X TO BE (RUMOR HAS IT EXPERTS CLAIM A TO BE 1 SHOCKING DEVELOPMENT A PLUS 2 END OF STORY) PLEASE LIKE AND SUBSCRIBE ==> Program( Assignment( Identifier, ParenBlock( Block( Assignment(Identifier, NumberLiteral), ReturnStatement(BinaryExpression(Identifier, NumberLiteral)) ) ) ), ProgramEnd )