Finish parser and error recognition

This commit is contained in:
Valk Richard Li
2019-08-22 17:45:19 +08:00
committed by GitHub
parent acc45909af
commit 794eccbb90
3 changed files with 441 additions and 61 deletions
+11 -11
View File
@@ -17,8 +17,8 @@
<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
<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>
@@ -56,22 +56,22 @@
<var> <identifier> <=> <func> <(><)> <{> <statement>|<statements> <}>
<var> <identifier> <=> <func> <(> <identifier>|<identifiers> <)> <{> <statement>|<statements> <}>
<10><loop> ::=
<while> <(> <scalar> <)> <statement>
<while> <(> <scalar> <)> <{> <statement>|<statements> <}>
<while> <scalar> <statement>
<while> <scalar> <{> <statement>|<statements> <}>
<foreach>|<forindex> <(> <statement> <identifier> <)> <statement>
<foreach>|<forindex> <(> <statement> <identifier> <{> <statement>|<statements> <}>
<for> <(> <statement> <scalar> <;> <identifier> <+=>|<-=>|<*=>|</=>|<~=>|<=> <scalar> <)> <statement>
<for> <(> <statement> <scalar> <;> <identifier> <+=>|<-=>|<*=>|</=>|<~=>|<=> <scalar> <)> <{> <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>
<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> <;>
<identifier>|<continue>|<break>|<scalar> <;>
<return> <identifier>|<scalar> <;>
<13><statements> ::=
<statement>|<statements> <statement>