Sei sulla pagina 1di 3

<ASSIGN> → ASSIGN_OP | =

<LIST> → <OE> | <THIS> | <SUPER>

<CONST> → INT_CONST | FLOAT_CONST | STR_CONST | TF | NULL

<OE> → <AE> <OE’>

<OE’> → | <AE> <OE’> |€

<AE> → <RE> <AE’>

<AE’> → & <RE> <AE’> |€

<RE> → <E> <RE’>

<E> →<T> <E’>

<E’> → PM <T> <E’>|€

<RE’> → ROP <E> <RE’> |€

<T> → <F> <T’>

<T’> → MDM <F> <T’> |€

<F> → <CONST> |!<F> | <CALLING> |(<OE>) | <INC_DEC_T>

<CALLING> → ID <ID1>

<ID1> → € | INC_DEC | (<PARAMS>) <CHOICE_4> | [<OE>] <CHOICE_4> | . <CALLING>

<CHOICE_4> → € | . <CALLING>

<INC_DEC_T> → INC_DEC <INC_D>

<INC_D> → ID <NEW_CHOICE>

<NEW_CHOICE> → € | [<OE>]

<PARAMS> → <OE> <MORE_PARAMS>

<MORE_PARAMS> → <PARAMS> | €

<IF_ELSE> → IF (<OE>) {<BODY_2>} <ELSE>

<ELSE> → ELSE <ELSE_UNCOMMON>| €

<ELSE_UNCOMMON> → {<BODY_2>} <IF_ELSE>

<BODY_2> → <BODY> <CB> <BODY>

<CB> → CB | €

<BODY> → <IF-ELSE> <BODY> | <WHEN> <BODY> | <LOOP> <BODY> |<DO_WHILE> <BODY> | <WHILE> <BODY> | <THIS>
<BODY> | <SUPER> <BODY> | <RETURN> <BODY> | <DEC_2_&_CALLING> <BODY> | VC <DEC_&_OBJECT> <BODY> |€

<WHEN> → WHEN (<OE>) {<BODY_WHEN> default {<BODY> } }

<BODY_WHEN> → case (<OE>) {<BODY> } <BODY_WHEN> | €

<LOOP> → LOOP (<LOOP_DEC> ; <LOOP_C>; <LOOP_INC_DEC>) {<BODY_2>}


<LOOP_DEC> → DT ID = <LIST> | <DEC_2> |€

<LOOP_C> → <OE>| €

<LOOP_INC_DEC> → <CALLING2> <ASSIGN> <OE> | <OE> | €

<DEC_2> → <CALLING2> <ASSIGN> <LIST>

<CALLING_2> → ID<CALLING_3>

<CALLING_3> → € | . <CALLING_2> | (<PARAMS>).<CALLING_2> |[<OE>]<CHOICE_2>

<CHOICE_2> → € | . <CALLING_2>

<DO_WHILE> → do {<BODY_2>} while (<OE>)

<WHILE> → while (<OE>) {<BODY_2>}

<THIS> → THIS . <THIS_SUPER_CALLING>

<THIS_SUPER_CALLING> → ID <THIS_SUPER_2>

<THIS_SUPER_2> → € | . <THIS_SUPER_CALLING> | INC_DEC | (<PARAMS>) <NEW_PARA> | [<OE>] <CHOICE_3>

<NEW_PARA> → € | . <THIS_SUPER_CALLING>

<CHOICE_3> → € | . <THIS_SUPER_CALLING> | INC_DEC

<SUPER> → super . <THIS_SUPER_CALLING>

<RETURN> → return <OE>

<DEC_2_&_CALLING> → <CALLING_2> <ASSIGN> <LIST> | <ID1>

<DEC_&_OBJECT> → DT ID <ASSIGN> <LIST> | ID = ID (<PARAMS>)

<CONSTRUCTOR> → constructor (<PARAMS_DEC>) { <BODY> }

<PARAMS_DEC> → DT ID <MORE_PARAMS_DEC> | €

<MORE_PARAMS_DEC> → , <PARAMS_DEC> | €

<ARRAY_DEC> → VC DT ID[] = {<VALUE>}

<VALUE> → <OE> | <VALUE_2>

<VALUE_2> → ,<VALUE> |€

<NORMAL_CLASS> → <O> class ID <EXT_IMP> {<NORMAL_CLASS_BODY>}

<O> → open |€

<EXT_IMP> → ext ID | €

<NORMAL_CLASS_BODY> → <ALL_AFER_PPP> <NORMAL_CLASS_BODY> | <CONSTRUCTOR> <NORMAL_CLASS_BODY> |


<COMBINATION_CLASS_PPP> | <OO_COMBINATION> | €

<ALL_AFTER_PPP> → static <COMMON_DEC> <NORMAL_CLASS_BODY> |<COMMON_DEC> <NORMAL_CLASS_BODY>

<COMMON_DEC> → VC DT ID <ARR_VAR> | <FUN_DEC_COMPULSORY>

<ARR_VAR> → <ASSIGN><LIST_OR_PARAMS> | [] = {<VALUE>}


<FUN_DEC_COMPULSORY> → FUN DT ID (<PARAMS_DEC>) {<BODY>}

<OBJECT> → VC DT ID= ID (<PARAMS>)

<LIST_OR_PARAMS> → <LIST> | (<PARAMS>)

<INTERFACE> → interface ID <EXT_IMP> {<INTERFACE_BODY> }

<INTERFACE_BODY> → <FUN_DEC_INT> <INTERFACE_BODY> | €

<FUN_DEC_INT> → FUN DT ID (<PARAMS_DEC>)

<ABSTRACT> → abstract class ID <EXT_IMP> {<ABSTRACT_BODY>}

<ABSTRACT_BODY> → <ALL_AFTER_PPP_ABS> <ABSTRACT_BODY> | <COMBINATION_ABSTRACT_PPP> | <ABSTRACT_FUN>


<ABSTRACT_BODY> | €

<ALL_AFTER_PPP_ABS> → static <COMMON_DEC> | <COMMON_DEC>

<ABSTRACT_FUN> → abstract <FUN_DEC_INT>

<MAIN> → fun main() {<BODY>}

<MAIN_CLASS> → main class ID <EXT_IMP> {<MAIN_CLASS_BODY>}

<MAIN_CLASS_BODY> → <NORMAL_CLASS_BODY> <MAIN> <NORMAL_CLASS_BODY>

<TOP> → <INTERFACE><TOP> | <NORMAL_CLASS><TOP> | <ABSTRACT><TOP>|€

<COMBINATION_CLASS_PPP> → public <ALL_AFTER_PPP> | private <ALL_AFTER_PPP> | protected<ALL_AFTER_PPP>

<COMBINATION_ABSTRACT_PPP> → public <ALL_AFTER_PPP_ABS> | PRIVATE <ALL_AFTER_PPP_ABS> |


protected<ALL_AFTER_PPP_ABS>

<OO_COMBINATION> → open <PP> <FUN_DEC_COMPULSORY> <NORMAL_CLASS-BODY> | override <PP>


<FUN_DEC_COMPULSORY> <NORMAL_CLASS_BODY>

<PP> → public | protected

<ENTER> → <TOP><MAIN_CLASS> <TOP>

Potrebbero piacerti anche