This repository was archived by the owner on Mar 16, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
LL Grammar
scr4bble edited this page Dec 14, 2014
·
28 revisions
PROGRAM → VAR_DECLR FUNC COMPOUND_STMT .
VAR_DECLR → var VAR_DEF
VAR_DECLR → ε
VAR_DEF → id : type ; VAR_DEFN
VAR_DEFN → id : type ; VAR_DEFN
VAR_DEFN → ε
FUNC → function id PARAM_DEF_LIST : type ; FORWARD FUNC
FUNC → ε
FORWARD → forward ;
FORWARD → VAR_DECLR COMPOUND_SEMICOLON_STMT
PARAM_DEF_LIST → ( PARAMS_DEF )
PARAMS_DEF → id : type PARAMS_DEF_N
PARAMS_DEF → ε
PARAMS_DEF_N → ; id : type PARAMS_DEF_N
PARAMS_DEF_N → ε
TERM_LIST → ( TERMS )
TERMS → term TERMS_N
TERMS_N → , term TERMS_N
TERMS_N → ε
COMPOUND_STMT → begin STMT_E end
COMPOUND_SEMICOLON_STMT → COMPOUND_STMT ;
STMT_LIST → ε
STMT_LIST → ; STMT STMT_LIST
STMT_E → STMT STMT_LIST
STMT_E → ε
STMT → id := EXPR
STMT → if EXPR then COMPOUND_STMT IF_N
STMT → while EXPR do COMPOUND_STMT
STMT → repeat STMT STMT_LIST until EXPR
STMT → COMPOUND_STMT
STMT → readln ( id )
STMT → write TERM_LIST
IF_N → else COMPOUND_STMT
IF_N → ε
PROGRAM -> VAR_DECLR FUNC COMPOUND_STMT .
VAR_DECLR -> var VAR_DEF .
VAR_DECLR -> .
VAR_DEF -> id : type ; VAR_DEFN .
VAR_DEFN -> id : type ; VAR_DEFN .
VAR_DEFN -> .
FUNC -> function id PARAM_DEF_LIST : type ; FORWARD FUNC .
FUNC -> .
FORWARD -> forward ; .
FORWARD -> VAR_DECLR COMPOUND_SEMICOLON_STMT .
PARAM_DEF_LIST -> ( PARAMS_DEF ) .
PARAMS_DEF -> id : type PARAMS_DEF_N .
PARAMS_DEF -> .
PARAMS_DEF_N -> ; id : type PARAMS_DEF_N .
PARAMS_DEF_N -> .
TERM_LIST -> ( TERMS ) .
TERMS -> term TERMS_N .
TERMS_N -> , term TERMS_N .
TERMS_N-> .
COMPOUND_STMT -> begin STMT_E end .
COMPOUND_SEMICOLON_STMT -> COMPOUND_STMT ; .
STMT_LIST -> .
STMT_LIST -> ; STMT STMT_LIST .
STMT_E -> .
STMT_E -> STMT STMT_LIST.
STMT -> id := EXPR .
STMT -> if EXPR then COMPOUND_STMT IF_N .
STMT -> while EXPR do COMPOUND_STMT .
STMT -> repeat STMT STMT_LIST until EXPR .
STMT -> COMPOUND_STMT .
STMT -> readln ( id ) .
STMT -> write TERM_LIST .
IF_N -> else COMPOUND_STMT .
IF_N -> .
EXPR → var // 1 token
EXPR → - EXPR // 2+++ tokens
EXPR → not EXPR // 2+++ tokens
/* 3 tokens */
EXPR → ( EXPR )
EXPR → EXPR * EXPR
EXPR → EXPR / EXPR
EXPR → EXPR and EXPR
EXPR → EXPR + EXPR
EXPR → EXPR - EXPR
EXPR → EXPR or EXPR
EXPR → EXPR xor EXPR
EXPR → EXPR < EXPR
EXPR → EXPR > EXPR
EXPR → EXPR <= EXPR
EXPR → EXPR >= EXPR
EXPR → EXPR = EXPR
EXPR → EXPR <> EXPR
/* 3,4,6,8... tokens*/
EXPR → func ( )
EXPR → func ( arg ARGNEXT )
ARGNEXT → , arg ARGNEXT
ARGNEXT → ε
| + | - | * | / | < | > | <= | >= | = | <> | ( | ) | f | , | $ | var | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| + | > | > | < | < | > | > | > | > | > | > | < | > | > | > | < | < |
| - | > | > | < | < | > | > | > | > | > | > | < | > | > | > | < | < |
| * | > | > | > | > | > | > | > | > | > | > | < | > | > | > | < | < |
| / | > | > | > | > | > | > | > | > | > | > | < | > | > | > | < | < |
| < | < | < | < | < | > | > | > | > | > | > | < | > | > | > | < | < |
| > | < | < | < | < | > | > | > | > | > | > | < | > | > | > | < | < |
| <= | < | < | < | < | > | > | > | > | > | > | < | > | > | > | < | < |
| >= | < | < | < | < | > | > | > | > | > | > | < | > | > | > | < | < |
| = | < | < | < | < | > | > | > | > | > | > | < | > | > | > | < | < |
| <> | < | < | < | < | > | > | > | > | > | > | < | > | > | > | < | < |
| ( | < | < | < | < | < | < | < | < | < | < | < | = | = | < | < | |
| ) | > | > | > | > | > | > | > | > | > | > | > | > | > | |||
| f | = | |||||||||||||||
| , | < | < | < | < | < | < | < | < | < | < | < | = | = | < | < | |
| $ | < | < | < | < | < | < | < | < | < | < | < | < | < | |||
| var | > | > | > | > | > | > | > | > | > | > | > | > | > |