grammar in readme
This commit is contained in:
89
doc/README
89
doc/README
@@ -24,3 +24,92 @@ and type in your program, you can use
|
||||
rlwrap ./scully
|
||||
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user