Slang v1.0 Syntax Diagrams

Module: Procedure Module ::= Procedure+ no referencesProcedure: FUNCTION type func_name ( arglist ) stmts END Procedure ::= FUNCTION type func_name '(' arglist ')' stmts END referenced by: Module type: NUMERIC STRING BOOLEAN type ::= NUMERIC | STRING | BOOLEAN referenced by: Procedure arglist vardeclstmt arglist: ( type arg_name , ) arglist ::= '(' ( type arg_name | ',' )* ')' referenced by: Procedure stmts: stmt stmts ::= stmt+ referenced by: Procedure ifstmt whilestmt stmt: vardeclstmt printstmt assignmentstmt callstmt ifstmt whilestmt returnstmt stmt ::= vardeclstmt | printstmt | assignmentstmt | callstmt | ifstmt | whilestmt | returnstmt referenced by: stmts vardeclstmt: type variable ; vardeclstmt ::= type variable ';' referenced by: stmt printstmt: PRINT expr ; printstmt ::= PRINT expr ';' referenced by: stmt assignmentstmt: variable = value ; assignmentstmt ::= variable '=' value ';' referenced by: stmt ifstmt: IF ( expr ) THEN stmts ELSE stmts ENDIF ifstmt ::= IF '(' expr ')' THEN stmts ( | ELSE stmts ) ENDIF referenced by: stmt whilestmt: WHILE ( expr ) stmts WEND whilestmt ::= WHILE '(' expr ')' stmts WEND referenced by: stmt returnstmt: Return expr ; returnstmt ::= Return expr ';' referenced by: stmt expr: BExpr expr ::= BExpr referenced by: Factor ifstmt printstmt returnstmt whilestmt BExpr: LExpr LOGIC_OP BExpr BExpr ::= LExpr LOGIC_OP BExpr referenced by: BExpr expr LExpr: RExpr REL_OP LExpr LExpr ::= RExpr REL_OP LExpr referenced by: BExpr LExpr RExpr: Term ADD_OP RExpr RExpr ::= Term ADD_OP RExpr referenced by: LExpr RExpr Term: Factor MUL_OP Term Term ::= Factor MUL_OP Term referenced by: RExpr Term Factor: NUMERIC STRING TRUE FALSE variable ( expr ) + - ! Factor callexpr Factor ::= NUMERIC | STRING | TRUE | FALSE | variable | '(' expr ')' | ( '+' | '-' | '!' ) Factor | callexpr referenced by: Factor Term callexpr: funcname ( actuals ) callexpr ::= funcname '(' actuals ')' referenced by: Factor LOGIC_OP: && || LOGIC_OP ::= '&&' | '||' referenced by: BExpr REL_OP: > < >= <= <> == REL_OP ::= '>' | '<' | '>=' | '<=' | '<>' | '==' referenced by: LExpr MUL_OP: * / MUL_OP ::= '*' | '/' referenced by: Term ADD_OP: + - ADD_OP ::= '+' | '-' referenced by: RExpr   ... generated by Railroad Diagram Generator R R