diff --git a/vba/examples/example1.bas b/vba/examples/example1.bas index d2b91469c4..22517df5b4 100644 --- a/vba/examples/example1.bas +++ b/vba/examples/example1.bas @@ -1,4 +1,3 @@ Public Sub Module() Dim sd As Boolean - End Sub diff --git a/vba/examples/example3erase.bas b/vba/examples/example3erase.bas new file mode 100644 index 0000000000..523db58c19 --- /dev/null +++ b/vba/examples/example3erase.bas @@ -0,0 +1,3 @@ +Public Sub Module() + Dim str As String * 3 +End Sub diff --git a/vba/examples/example4fixedstring.bas b/vba/examples/example4fixedstring.bas new file mode 100644 index 0000000000..e00dd6b775 --- /dev/null +++ b/vba/examples/example4fixedstring.bas @@ -0,0 +1,3 @@ +Public Sub Module() + Erase array, list +End Sub diff --git a/vba/vba.g4 b/vba/vba.g4 index 3c732a8ccd..a34c7369fe 100644 --- a/vba/vba.g4 +++ b/vba/vba.g4 @@ -293,7 +293,7 @@ enumerationStmt: enumerationStmt_Constant : ambiguousIdentifier (WS? EQ WS? valueStmt)? endOfStatement; -eraseStmt : ERASE WS valueStmt; +eraseStmt : ERASE WS valueStmt (',' WS? valueStmt)*?; errorStmt : ERROR WS valueStmt; @@ -655,7 +655,7 @@ ambiguousIdentifier : asTypeClause : AS WS? (NEW WS)? type (WS? fieldLength)?; -baseType : BOOLEAN | BYTE | COLLECTION | DATE | DOUBLE | INTEGER | LONG | SINGLE | STRING | VARIANT; +baseType : BOOLEAN | BYTE | COLLECTION | DATE | DOUBLE | INTEGER | LONG | SINGLE | STRING (WS? MULT WS? valueStmt)? | VARIANT; certainIdentifier : IDENTIFIER (ambiguousKeyword | IDENTIFIER)* @@ -926,7 +926,6 @@ HEXLITERAL : '&H' [0-9A-F]+ '&'?; SHORTLITERAL : (PLUS|MINUS)? DIGIT+ ('#' | '&' | '@')?; INTEGERLITERAL : SHORTLITERAL (E SHORTLITERAL)?; DOUBLELITERAL : (PLUS|MINUS)? DIGIT* '.' DIGIT+ (E SHORTLITERAL)?; - DATELITERAL : '#' DATEORTIME '#'; fragment DATEORTIME : DATEVALUE WS? TIMEVALUE | DATEVALUE | TIMEVALUE; fragment DATEVALUE : DATEVALUEPART DATESEPARATOR DATEVALUEPART (DATESEPARATOR DATEVALUEPART)?; @@ -952,7 +951,6 @@ WS : ([ \t] | LINE_CONTINUATION)+; // identifier IDENTIFIER : ~[\]()\r\n\t.,'"|!@#$%^&*\-+:=; ]+ | L_SQUARE_BRACKET (~[!\]\r\n])+ R_SQUARE_BRACKET; - // letters fragment LETTER : [a-zA-Z_äöüÄÖÜ]; fragment DIGIT : [0-9]; @@ -984,4 +982,4 @@ fragment V:('v'|'V'); fragment W:('w'|'W'); fragment X:('x'|'X'); fragment Y:('y'|'Y'); -fragment Z:('z'|'Z'); +fragment Z:('z'|'Z'); \ No newline at end of file