productions ID = id(STRING) -> id(STRING) ID_LIST = ID_LIST1 -> id_list(ID_LIST1) ID_LIST1 = ID+ separator comma VAR_LIST = VAR_LIST1 -> var_list(VAR_LIST1) VAR_LIST1 = VAR+ separator comma VAL_LIST = VAL_LIST1 -> val_list(VAL_LIST1) VAL_LIST1 = VAL+ separator comma AP_LIST = lpar AP_LIST1 rpar -> aplist(AP_LIST1) AP_LIST1 = APAR+ separator comma INDICES = A_EXPR+ separator comma EXF_LIST = WR_EXPR+ separator comma WR_EXPR = VAR_FUN WR_EXPR1 -> wr_exp(VAR_FUN,WR_EXPR1) WR_EXPR1 = colon A_EXPR WR_EXPR2 -> wr_exp1(A_EXPR,WR_EXPR2), -> wr_exp11 WR_EXPR2 = colon A_EXPR -> wr_exp2(A_EXPR), -> wr_exp22 VAL = id(STRING) -> id(STRING), int(INTEGER) -> int(INTEGER), char(CHAR) -> char(CHAR) APAR = integer -> integer, real -> real, boolean -> boolean, character -> character, string -> string, semaphore -> semaphore, coroutine -> coroutine, process -> process, EXPR -> expr(EXPR) CS_TYPE = coroutine ->coroutine, process -> process, id(STRING) -> id(STRING) A_EXPR = A_EXPR plus A_EXPR -> plus(A_EXPR,A_EXPR), A_EXPR minus A_EXPR -> minus(A_EXPR,A_EXPR) -- A_EXPR times A_EXPR -> times(A_EXPR,A_EXPR), A_EXPR divides A_EXPR -> divides(A_EXPR,A_EXPR), A_EXPR div A_EXPR -> div(A_EXPR,A_EXPR), A_EXPR mod A_EXPR -> mod(A_EXPR,A_EXPR) -- minus A_EXPR -> min(A_EXPR), lpar A_EXPR rpar -> A_EXPR, int(INTEGER) -> int(INTEGER), r(REAL) -> r(REAL), VAR_FUN -> var_fun(VAR_FUN) B_EXPR = B_EXPR or_ B_EXPR -> or_(B_EXPR,B_EXPR) -- B_EXPR and_ B_EXPR -> and_(B_EXPR,B_EXPR) -- ACO_EXPR nequal ACO_EXPR -> nequal(ACO_EXPR,ACO_EXPR), ACO_EXPR equal ACO_EXPR -> equal(ACO_EXPR,ACO_EXPR), A_EXPR lesseq A_EXPR -> lesseq(A_EXPR,A_EXPR), A_EXPR less A_EXPR -> less(A_EXPR,A_EXPR), A_EXPR greatereq A_EXPR -> greatereq(A_EXPR,A_EXPR), A_EXPR greater A_EXPR -> greater(A_EXPR,A_EXPR), O_EXPR is CS_TYPE -> is(O_EXPR,CS_TYPE), O_EXPR in CS_TYPE -> in(O_EXPR,CS_TYPE) -- not_ B_EXPR -> not_(B_EXPR), lpar B_EXPR rpar -> B_EXPR, ts lpar VAR rpar -> ts(VAR), VAR_FUN -> var_fun(VAR_FUN), true_ -> true_, false_ -> false_ C_EXPR = VAR_FUN -> var_fun(VAR_FUN) -- char(CHAR) -> char(CHAR) O_EXPR = none -> none, wait -> wait, THIS dot O_EXPR1 -> dot(THIS,O_EXPR1), this ID -> this(ID), O_EXPR1 -> o_exp1(O_EXPR1) O_EXPR1 = O_EXPR2 dot O_EXPR1 -> dot(O_EXPR2,O_EXPR1), O_EXPR3 -> o_exp3(O_EXPR3) O_EXPR2 = VAR_FUN2 qua ID -> qua(VAR_FUN2,ID), O_EXPR3 -> o_exp3(O_EXPR3) O_EXPR3 = new ID lpar AP_LIST1 rpar ->new(ID,AP_LIST1), new ID -> new1(ID), VAR_FUN2 -> var_fun2(VAR_FUN2) AC_EXPR = A_EXPR -> a_exp(A_EXPR), C_EXPR -> c_exp(C_EXPR) ACO_EXPR = A_EXPR -> a_exp(A_EXPR), C_EXPR -> c_exp(C_EXPR), O_EXPR -> o_exp(O_EXPR) EXPR = A_EXPR -> a_exp(A_EXPR), B_EXPR -> b_exp(B_EXPR), C_EXPR -> c_exp(C_EXPR), O_EXPR -> o_exp(O_EXPR) THIS = this ID -> this(ID) VAR_FUN = THIS dot VAR_FUN1 -> dot(THIS,VAR_FUN1), VAR_FUN1 -> var_fun1(VAR_FUN1) VAR_FUN1 = O_EXPR2 dot VAR_FUN1 -> dot(O_EXPR2,VAR_FUN1), VAR_FUN2 -> var_fun2(VAR_FUN2) VAR_FUN2 = ID lpar AP_LIST1 rpar -> fcall(ID,AP_LIST1), ID lbra INDICES rbra -> indvar(ID,INDICES), id(STRING) -> id(STRING) VAR = THIS dot VAR1 -> dot(THIS,VAR1), VAR1 -> var1(VAR1) VAR1 = O_EXPR2 dot VAR1 -> dot(O_EXPR2,VAR1), VAR2 -> var2(VAR2) VAR2 = ID lbra INDICES rbra -> indvar(ID,INDICES), id(STRING) -> id(STRING) VAR_MAIN = main -> main, VAR -> var(VAR) IF_B_EXPR = IF_B_EXPR orif IF_B_EXPR -> orif(IF_B_EXPR,IF_B_EXPR) -- IF_B_EXPR andif IF_B_EXPR -> andif(IF_B_EXPR,IF_B_EXPR) -- B_EXPR -> b_exp(B_EXPR) SIMP_EXPR = minus SIMP_EXPR1 -> min(SIMP_EXPR1), int(INTEGER) -> int(INTEGER), r(REAL) -> r(REAL), id(STRING) -> id(STRING), char(CHAR) -> char(CHAR), str(STRING) -> str(STRING) SIMP_EXPR1 = int(INTEGER) -> int(INTEGER), r(REAL) -> r(REAL), id(STRING) -> id(STRING)