grammar in readme

This commit is contained in:
2013-06-02 09:01:50 +02:00
parent 89f938e7a7
commit 305716648e

View File

@@ -24,3 +24,92 @@ and type in your program, you can use
rlwrap ./scully rlwrap ./scully
for more input awesomeness. (http://utopia.knoware.nl/~hlub/rlwrap/#rlwrap) for more input awesomeness. (http://utopia.knoware.nl/~hlub/rlwrap/#rlwrap)
# Grammar
// Symbols:
// 0 $ 10 T_LPAREN 20 T_FOR 30 expr
// 1 T_WHITESPACE 11 T_RPAREN 21 T_SEMICOLON 31 type
// 2 T_ASSIGN 12 T_BEGIN 22 T_RFOR 32 params
// 3 T_EQUALS 13 T_END 23 T_RETURN 33 statements
// 4 T_LESS 14 T_BOOL 24 T_CINT 34 statement
// 5 T_PLUS 15 T_INT 25 T_TRUE 35 vardef
// 6 T_MINUS 16 T_VOID 26 T_FALSE 36 values
// 7 T_TIMES 17 T_COMMA 27 error
// 8 T_DIV 18 T_IF 28 program
// 9 T_IDENTIFIER 19 T_RIF 29 fundef
program ::= fundef.
program ::= expr.
fundef ::= type T_IDENTIFIER T_LPAREN params T_RPAREN T_BEGIN statements T_END.
type ::= T_BOOL.
type ::= T_INT.
type ::= T_VOID.
params ::=.
params ::= type T_IDENTIFIER.
params ::= params T_COMMA type T_IDENTIFIER.
statement ::= T_IF T_LPAREN expr T_RPAREN statement.
statement ::= T_RIF T_LPAREN expr T_RPAREN statement.
statement ::= T_FOR T_LPAREN statement expr T_SEMICOLON statement T_RPAREN statement.
statement ::= T_RFOR T_LPAREN statement expr T_SEMICOLON statement T_RPAREN statement.
statement ::= T_RETURN T_SEMICOLON.
statement ::= T_RETURN expr T_SEMICOLON.
statement ::= T_BEGIN statements T_END.
statement ::= vardef T_SEMICOLON.
statement ::= expr T_SEMICOLON.
statements ::=.
statements ::= statements statement.
expr ::= T_IDENTIFIER.
expr ::= T_IDENTIFIER T_ASSIGN expr.
expr ::= expr T_EQUALS expr.
expr ::= expr T_LESS expr.
expr ::= expr T_PLUS expr.
expr ::= expr T_MINUS expr.
expr ::= expr T_TIMES expr.
expr ::= expr T_DIV expr.
expr ::= T_CINT.
expr ::= T_TRUE.
expr ::= T_FALSE.
expr ::= T_IDENTIFIER T_LPAREN values T_RPAREN.
vardef ::= type T_IDENTIFIER.
values ::=.
values ::= expr.
values ::= values T_COMMA expr.
# The Symbols are
keywords:
"bool", T_BOOL
"for", T_FOR
"if", T_IF
"int", T_INT
"return", T_RETURN
"void", T_VOID
"rfor", T_RFOR
"rif", T_RIF
special characters:
"dana", T_LPAREN
"fox", T_RPAREN
"mulder", T_BEGIN
"scully", T_END
",", T_COMMA
";", T_SEMICOLON
operators:
"=", T_ASSIGN
"==", T_EQUALS
"<", T_LESS
"+", T_PLUS
"-", T_MINUS
"*", T_TIMES
"/", T_DIV
constants:
"true", T_TRUE
"false", T_FALSE
"\\d+", T_CINT
identifier:
"[a-zA-Z_][a-zA-Z_0-9]*", T_IDENTIFIER
whitespace:
"\\s+", T_WHITESPACE