78 lines
3.2 KiB
C++
78 lines
3.2 KiB
C++
//
|
|
//definition:
|
|
//var e=1;
|
|
//var e=e;
|
|
//var e=e[0];
|
|
//var e=e[i];
|
|
//var e=e.e;
|
|
//var e=e[func()];
|
|
//var e=func();
|
|
// identifier
|
|
// scalar
|
|
// call_func -> identifier func_name()
|
|
// array_search -> identifier e[0] e[e]
|
|
// hash_search -> identifier e.e
|
|
|
|
<1><scalar> ::=
|
|
<number> //NUMBER
|
|
<string> //STRING
|
|
<!> <identifier>|<scalar>
|
|
<identifier>|<scalar> <+>|<->|<*>|</>|<~>|<and>|<or>|<==>|<!=>|<<>|<<=>|<>>|<>=> <identifier>|<scalar>
|
|
<(> <identifier>|<scalar> <)> // find a way to distinguish while(scalar) with real (scalar+-scalar)*scalar
|
|
<2><scalars> ::=
|
|
<scalar>|<scalars> <,> <scalar>|<identifier>
|
|
<identifier>|<identifiers> <,> <scalar>
|
|
<3><identifier> ::=
|
|
<identifier> // IDENTIFIER
|
|
<identifier> <[> <identifier>|<scalar> <]> //__array_search
|
|
<identifier> <.> <identifier> //__hash_search
|
|
<identifier> <(> <identifier>|<identifiers>|<scalar>|<scalars> <)> //__call_func
|
|
<identifier> <(><)> //__call_func_null
|
|
<4><identifiers> ::=
|
|
<identifier>|<identifiers> <,> <identifier>
|
|
<5><hash_member> ::=
|
|
<identifier> <:> <identifier>|<scalar>|<__func>
|
|
<identifier> <:> <func> <(><)> <{><}>
|
|
<identifier> <:> <func> <(> <identifier>|<identifiers> <)> <{><}>
|
|
<identifier> <:> <func> <(><)> <{> <statement>|<statements> <}>
|
|
<identifier> <:> <func> <(> <identifier>|<identifiers> <)> <{> <statement>|<statements> <}>
|
|
<6><hash_members> ::=
|
|
<hash_member>|<hash_members> <,> <hash_member>
|
|
<7><definition> ::=
|
|
<var> <identifier> <=> <identifier>|<scalar> <;>
|
|
<var> <identifier> <=> <[><]> <;>
|
|
<var> <identifier> <=> <{><}> <;>
|
|
<var> <identifier> <=> <[> <scalar>|<scalars>|<identifier>|<identifiers> <]> <;>
|
|
<var> <identifier> <=> <{> <hash_member>|<hash_members> <}> <;>
|
|
<8><assignment> ::=
|
|
<identifier> <=> <identifier>|<scalar> <;>
|
|
<identifier> <=> <[><]> <;>
|
|
<identifier> <=> <{><}> <;>
|
|
<identifier> <=> <[> <scalar>|<scalars>|<identifier>|<identifiers> <]> <;>
|
|
<identifier> <=> <{> <hash_member>|<hash_members> <}> <;>
|
|
<9><__func> ::=
|
|
<var> <identifier> <=> <func> <(><)> <{><}>
|
|
<var> <identifier> <=> <func> <(> <identifier>|<identifiers> <)> <{><}>
|
|
<var> <identifier> <=> <func> <(><)> <{> <statement>|<statements> <}>
|
|
<var> <identifier> <=> <func> <(> <identifier>|<identifiers> <)> <{> <statement>|<statements> <}>
|
|
<10><loop> ::=
|
|
<while> <scalar> <statement>
|
|
<while> <scalar> <{> <statement>|<statements> <}>
|
|
<foreach>|<forindex> <(> <statement> <identifier> <)> <statement>
|
|
<foreach>|<forindex> <(> <statement> <identifier> <{> <statement>|<statements> <}>
|
|
<for> <(> <statements> <identifier> <+=>|<-=>|<*=>|</=>|<~=>|<=> <scalar> <)> <statement>
|
|
<for> <(> <statements> <identifier> <+=>|<-=>|<*=>|</=>|<~=>|<=> <scalar> <)> <{> <statement>|<statements> <}>
|
|
<11><choose> ::=
|
|
<if>|<elsif> <scalar> <{> <statement>|<statements> <}>
|
|
<if>|<elsif> <scalar> <statement>
|
|
<else> <if> <scalar> <{> <statement>|<statements> <}>
|
|
<else> <if> <scalar> <statement>
|
|
<else> <{> <statement>|<statements> <}>
|
|
<else> <statement>
|
|
<12><statement> ::=
|
|
<definition>|<assignment>|<__func>|<loop>|<choose>
|
|
<identifier>|<continue>|<break>|<scalar> <;>
|
|
<return> <identifier>|<scalar> <;>
|
|
<13><statements> ::=
|
|
<statement>|<statements> <statement>
|