Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
fba6d15
Adding label to RARROW in rule 'type', as suggested by the algorithm …
sqmedeiros Apr 18, 2018
ae506c1
Annotating repetitions in rule program
sqmedeiros Apr 18, 2018
5a694ac
Annotating rule 'rettypeopt'
sqmedeiros Apr 23, 2018
26db36a
Annotating rule 'paramlist'. Throws Err_029 instead of RParPList, whi…
sqmedeiros Apr 23, 2018
20ee7de
Annotating rule 'decl'. This hides labels AssignVar, AssignFor and As…
sqmedeiros Apr 23, 2018
1b6629d
Annotating until rule 'typelist'. Annotating the repetition in this r…
sqmedeiros Apr 23, 2018
53910fe
Annotating rule 'recordfields'. This hides label EndRecord. Commented…
sqmedeiros Apr 23, 2018
898c454
Annotating rule recordfield
sqmedeiros Apr 27, 2018
eb9c927
Annotating rule 'block'
sqmedeiros Apr 30, 2018
d34733a
Annotating rule 'block'
sqmedeiros Apr 30, 2018
ea64307
Annotating rules 'elseifstats' and 'elseopt'
sqmedeiros Apr 30, 2018
5fc0d88
Annotating rule 'returnstat'
sqmedeiros Apr 30, 2018
367bbbf
Annotating rule 'e1'
sqmedeiros Apr 30, 2018
2cbc12b
Annotating rules 'e2' and 'e3'
sqmedeiros May 3, 2018
8208e59
Annotating e4,e5,e6 and e7
sqmedeiros May 4, 2018
078090a
Annotating e9, e10, skipeed e11 (error), e12, varlist and funcargs
sqmedeiros May 4, 2018
ea0c8fc
Annotating explist, initlist and fieldlist
sqmedeiros May 4, 2018
27e9b6b
Annotating rule 'e11'
sqmedeiros May 4, 2018
968c13f
Adding the annotated Titan grammar Titan generated by the algorithm t…
sqmedeiros May 4, 2018
cd912df
Chaning 'pegtitan.txt' to 'annotatedTitan.txt'
sqmedeiros May 4, 2018
a61ae1f
Minor update in rule e8.
sqmedeiros May 8, 2018
2cb6fc6
Removing pegtitan.txt
sqmedeiros May 8, 2018
b2c10db
Updating the annotated grammar
sqmedeiros May 8, 2018
0a93433
Using the unmodified tests of 'parser_spec.lua'. Adding an extra labe…
sqmedeiros May 8, 2018
0e00e04
Recovering when label ExpVarDec is thrown
sqmedeiros May 9, 2018
f257716
Adjusting recovery rule ExpVarDec
sqmedeiros May 9, 2018
3aa5874
Recovering from label NameFunc
sqmedeiros May 9, 2018
82e0687
Recovering from labels thrown by rule 'toplevelfunc'
sqmedeiros May 9, 2018
519a177
Recovering from labels thrown by 'toplevelrecord'
sqmedeiros May 9, 2018
e629fdf
Adding file with notes about the recovery
sqmedeiros May 9, 2018
7944e18
Recovering from labels thrown by 'import'
sqmedeiros May 9, 2018
884eb88
Recovering from labels thrown by 'foreign' and 'rettypeopt'
sqmedeiros May 9, 2018
b26d136
Recovering from labels thrown by rule 'paramlist'
sqmedeiros May 9, 2018
7d6b013
Recovering from errors thown by 'param' and 'decl'
sqmedeiros May 9, 2018
101bfdb
Recovering from rules 'decllist' and 'simpletype'
sqmedeiros May 9, 2018
09ca56b
Recovering from labels TypelistType and TypeReturnTypes. TODO: check …
sqmedeiros May 10, 2018
7e52edb
Updating the annotated gramamr generated by the algorithm (only the n…
sqmedeiros May 10, 2018
9a40eff
A note
sqmedeiros May 10, 2018
19f2547
Recovering from Err_032, thrown by rule 'type'
sqmedeiros May 10, 2018
02e3d8b
Recovering from labels thown by 'rettype' and 'type'
sqmedeiros May 11, 2018
52f0c80
Recovering from labels thrown by 'recordfield'
sqmedeiros May 11, 2018
8973258
Recovering from labels EndBlock, ExpWhile, DoWhile and EndWhile
sqmedeiros May 11, 2018
4e50f7f
Recovering from labels UntilRepeat, ExpRepeat, ExpIf, ThenIf and EndIf
sqmedeiros May 11, 2018
ac7373d
Recovering from the labels thrown in a 'for' loop
sqmedeiros May 11, 2018
5e1f3b1
Recovering from labels DeclLocal, AssignLocal and ExpLocal
sqmedeiros May 11, 2018
8b2d0ef
Recovering from labels DecLocal, ..., ExtStat
sqmedeiros May 11, 2018
e50c336
Fixing recovery of label DeclLocal, and adding recovery for rules e1 …
sqmedeiros May 11, 2018
e9053e0
Annotating rules e1, e2, e3, ..., e4 (needed to change MAXRULES in lp…
sqmedeiros May 11, 2018
b1832b9
Using just label OpExp to the errors related to the syntax of an expr…
sqmedeiros May 11, 2018
1ae6211
Recovering from labels thrown by rule 'expsuffix'
sqmedeiros May 11, 2018
3ff95f4
Reusing rule EndBlockRec to avoid hit the limit of grammar rules
sqmedeiros May 14, 2018
3865956
Recovering from labels thrown by prefixexp
sqmedeiros May 14, 2018
4b33360
Recovering from labels thrown from rule 'prefixexp' until 'fieldlist'…
sqmedeiros May 14, 2018
b1f7018
Fixing recovery expression associated with ExpAssign(Pred) and ExpSta…
sqmedeiros May 14, 2018
ad9af16
Testing recovering from labels ExpAssignPred and ExpStat
sqmedeiros May 14, 2018
4ff8dbf
Recovering from RParenTypelist
sqmedeiros May 14, 2018
29f777e
Fixing a typo in the name of labels, and adding a manual recovery rul…
sqmedeiros May 18, 2018
efeba78
Also pass the tests using the recovery rule of NameRecord, although i…
sqmedeiros May 18, 2018
fef4021
Throwing a label when does not match the whole input
sqmedeiros Jul 5, 2018
1659426
Merge branch 'master' into recovery
sqmedeiros Jul 11, 2018
0aedc8f
Reusing recovery rules which are equal to not hit the limit of gramma…
sqmedeiros Jul 11, 2018
eac9b8e
Updating the recovery rules after updating the grammar (new rules met…
sqmedeiros Jul 25, 2018
ed5b024
Adding the grammar annotated by the algorithm (after adding rules 'me…
sqmedeiros Jul 25, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions spec/parser_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -866,8 +866,8 @@ describe("Titan parser", function()
end)

it("does not allow parentheses in the LHS of an assignment", function()
assert_statements_syntax_error([[ local (x) = 42 ]], "DeclLocal")
assert_statements_syntax_error([[ (x) = 42 ]], "ExpAssign")
assert_statements_syntax_error([[ local (xyz) = 42 ]], "DeclLocal")
assert_statements_syntax_error([[ (xzy) = 42 ]], "ExpAssignPred")
end)

it("does not allow identifiers that are type names", function()
Expand Down Expand Up @@ -931,7 +931,8 @@ describe("Titan parser", function()
]], "AssignVar")

assert_program_syntax_error([[
x =
x =
local y = 3
]], "ExpVarDec")

assert_program_syntax_error([[
Expand Down Expand Up @@ -962,12 +963,12 @@ describe("Titan parser", function()
assert_program_syntax_error([[
function foo (a:int, ) : int
end
]], "DeclParList")
]], "ParamList")

assert_program_syntax_error([[
function foo (a: ) : int
end
]], "TypeDecl")
]], "TypeParam")


assert_type_syntax_error([[ {} ]], "TypeType")
Expand All @@ -980,6 +981,8 @@ describe("Titan parser", function()

assert_type_syntax_error([[ (a, b) -> = nil ]], "TypeReturnTypes")

assert_type_syntax_error([[ (a, b) b ]], "Err_037")

assert_type_syntax_error([[ foo. ]], "QualName")

assert_program_syntax_error([[
Expand Down
136 changes: 136 additions & 0 deletions titan-compiler/annotatedTitan.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
program <- SKIP* (toplevelfunc / toplevelvar / toplevelrecord / import / foreign)* !.
toplevelfunc <- localopt 'function' [NAME]^Err_001 ['(']^Err_002 paramlist [')']^Err_003 rettypeopt block ['end']^Err_004
toplevelvar <- localopt decl ['=']^Err_005 [exp]^Err_006
toplevelrecord <- 'record' [NAME]^Err_007 [recordfields]^Err_008 ['end']^Err_009
localopt <- 'local'?
import <- 'local' [NAME]^Err_010 ['=']^Err_011 ['import']^Err_012 ['(' [STRINGLIT]^Err_013 [')']^Err_014 / STRINGLIT]^Err_015
foreign <- 'local' [NAME]^Err_016 ['=']^Err_017 ['foreign']^Err_018 ['(' [STRINGLIT]^Err_019 [')']^Err_020 / STRINGLIT]^Err_021
rettypeopt <- (':' [rettype]^Err_022)?
paramlist <- (param (',' [param]^Err_023)*)?
param <- NAME [':']^Err_024 [type]^Err_025
decl <- NAME (':' [type]^Err_026)?
decllist <- decl (',' [decl]^Err_027)*
simpletype <- 'nil' / 'boolean' / 'integer' / 'float' / 'string' / 'value' / NAME / '{' [type]^Err_028 ['}']^Err_029
typelist <- '(' (type (',' [type]^Err_030)*)? [')']^Err_031
rettype <- typelist '->' rettype / simpletype '->' rettype / typelist / simpletype
type <- typelist ['->']^Err_032 [rettype]^Err_033 / simpletype '->' rettype / simpletype
recordfields <- recordfield+
recordfield <- NAME [':']^Err_034 [type]^Err_035 ';'?
block <- statement* returnstat?
statement <- ';' / 'do' block ['end']^Err_036 / 'while' [exp]^Err_037 ['do']^Err_038 block ['end']^Err_039 / 'repeat' block ['until']^Err_040 [exp]^Err_041 / 'if' [exp]^Err_042 ['then']^Err_043 block elseifstats elseopt ['end']^Err_044 / 'for' [decl]^Err_045 ['=']^Err_046 [exp]^Err_047 [',']^Err_048 [exp]^Err_049 (',' [exp]^Err_050)? ['do']^Err_051 block ['end']^Err_052 / 'local' [decllist]^Err_053 ['=']^Err_054 [explist]^Err_055 / varlist '=' explist / suffixedexp
elseifstats <- elseifstat*
elseifstat <- 'elseif' [exp]^Err_056 ['then']^Err_057 block
elseopt <- ('else' block)?
returnstat <- 'return' explist? ';'?
exp <- e1
e1 <- e2 ('or' [e2]^Err_058)*
e2 <- e3 ('and' [e3]^Err_059)*
e3 <- e4 (('==' / '~=' / '<' / '>' / '<=' / '>=') [e4]^Err_060)*
e4 <- e5 ('|' [e5]^Err_061)*
e5 <- e6 ('~' [e6]^Err_062)*
e6 <- e7 ('&' [e7]^Err_063)*
e7 <- e8 (('<<' / '>>') [e8]^Err_064)*
e8 <- e9 ('..' [e8]^Err_065)?
e9 <- e10 (('+' / '-') [e10]^Err_066)*
e10 <- e11 (('*' / '%%' / '/' / '//') [e11]^Err_067)*
e11 <- ('not' / '#' / '-' / '~')* e12
e12 <- castexp ('^' [e11]^Err_068)?
suffixedexp <- prefixexp expsuffix+
expsuffix <- funcargs / ':' [NAME]^Err_069 [funcargs]^Err_070 / '[' [exp]^Err_071 [']']^Err_072 / '.' [NAME]^Err_073
prefixexp <- NAME / '(' [exp]^Err_074 [')']^Err_075
castexp <- simpleexp 'as' type / simpleexp
simpleexp <- 'nil' / 'false' / 'true' / NUMBER / STRINGLIT / initlist / suffixedexp / prefixexp
var <- suffixedexp / NAME !expsuffix
varlist <- var (',' [var]^Err_076)*
funcargs <- '(' explist? [')']^Err_077 / initlist / STRINGLIT
explist <- exp (',' [exp]^Err_078)*
initlist <- '{' fieldlist? ['}']^Err_079
fieldlist <- field (fieldsep field)* fieldsep?
field <- (NAME '=')? exp
fieldsep <- ';' / ','
STRINGLIT <- '"' (!'"' .)* ['"']^Err_080
RESERVED <- 'repeat'
NAME <- !RESERVED 'X' ('a' / 'b' / 'c' / NUMBER)*
NUMBER <- ('0' / '1' / '2' / '3' / '4' / '5' / '6' / '7' / '8' / '9')+
SKIP <- ' '
Err_001 <- (!'(' .)*
Err_002 <- (!('X' / ')') .)*
Err_003 <- (!('while' / 'return' / 'repeat' / 'local' / 'if' / 'for' / 'end' / 'do' / 'X' / ';' / ':' / '(') .)*
Err_004 <- (!('record' / 'local' / 'function' / 'X' / '$') .)*
Err_005 <- (!('~' / '{' / 'true' / 'not' / 'nil' / 'false' / 'X' / '9' / '8' / '7' / '6' / '5' / '4' / '3' / '2' / '1' / '0' / '-' / '(' / '#' / '"') .)*
Err_006 <- (!('record' / 'local' / 'function' / 'X' / '$') .)*
Err_007 <- (!'X' .)*
Err_008 <- (!'end' .)*
Err_009 <- (!('record' / 'local' / 'function' / 'X' / '$') .)*
Err_010 <- (!'=' .)*
Err_011 <- (!'import' .)*
Err_012 <- (!('(' / '"') .)*
Err_013 <- (!')' .)*
Err_014 <- (!('record' / 'local' / 'function' / 'X' / '$') .)*
Err_015 <- (!('record' / 'local' / 'function' / 'X' / '$') .)*
Err_016 <- (!'=' .)*
Err_017 <- (!'foreign' .)*
Err_018 <- (!('(' / '"') .)*
Err_019 <- (!')' .)*
Err_020 <- (!('record' / 'local' / 'function' / 'X' / '$') .)*
Err_021 <- (!('record' / 'local' / 'function' / 'X' / '$') .)*
Err_022 <- (!('while' / 'return' / 'repeat' / 'local' / 'if' / 'for' / 'end' / 'do' / 'X' / ';' / '(') .)*
Err_023 <- (!')' .)*
Err_024 <- (!('{' / 'value' / 'string' / 'nil' / 'integer' / 'float' / 'boolean' / 'X' / '(') .)*
Err_025 <- (!(',' / ')') .)*
Err_026 <- (!('=' / ',') .)*
Err_027 <- (!'=' .)*
Err_028 <- (!'}' .)*
Err_029 <- (!('~=' / '~' / '}' / '|' / 'while' / 'until' / 'then' / 'return' / 'repeat' / 'record' / 'or' / 'local' / 'if' / 'function' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'and' / '^' / ']' / 'X' / '>>' / '>=' / '>' / '==' / '=' / '<=' / '<<' / '<' / ';' / '//' / '/' / '..' / '->' / '-' / ',' / '+' / '*' / ')' / '(' / '&' / '%%' / '$') .)*
Err_030 <- (!')' .)*
Err_031 <- (!('~=' / '~' / '}' / '|' / 'while' / 'until' / 'then' / 'return' / 'repeat' / 'record' / 'or' / 'local' / 'if' / 'function' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'and' / '^' / ']' / 'X' / '>>' / '>=' / '>' / '==' / '=' / '<=' / '<<' / '<' / ';' / '//' / '/' / '..' / '->' / '-' / ',' / '+' / '*' / ')' / '(' / '&' / '%%' / '$') .)*
Err_032 <- (!('{' / 'value' / 'string' / 'nil' / 'integer' / 'float' / 'boolean' / 'X' / '(') .)*
Err_033 <- (!('~=' / '~' / '}' / '|' / 'while' / 'until' / 'then' / 'return' / 'repeat' / 'record' / 'or' / 'local' / 'if' / 'function' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'and' / '^' / ']' / 'X' / '>>' / '>=' / '>' / '==' / '=' / '<=' / '<<' / '<' / ';' / '//' / '/' / '..' / '-' / ',' / '+' / '*' / ')' / '(' / '&' / '%%' / '$') .)*
Err_034 <- (!('{' / 'value' / 'string' / 'nil' / 'integer' / 'float' / 'boolean' / 'X' / '(') .)*
Err_035 <- (!('end' / 'X' / ';') .)*
Err_036 <- (!('while' / 'until' / 'return' / 'repeat' / 'local' / 'if' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'X' / ';' / '(') .)*
Err_037 <- (!'do' .)*
Err_038 <- (!('while' / 'return' / 'repeat' / 'local' / 'if' / 'for' / 'end' / 'do' / 'X' / ';' / '(') .)*
Err_039 <- (!('while' / 'until' / 'return' / 'repeat' / 'local' / 'if' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'X' / ';' / '(') .)*
Err_040 <- (!('~' / '{' / 'true' / 'not' / 'nil' / 'false' / 'X' / '9' / '8' / '7' / '6' / '5' / '4' / '3' / '2' / '1' / '0' / '-' / '(' / '#' / '"') .)*
Err_041 <- (!('while' / 'until' / 'return' / 'repeat' / 'local' / 'if' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'X' / ';' / '(') .)*
Err_042 <- (!'then' .)*
Err_043 <- (!('while' / 'return' / 'repeat' / 'local' / 'if' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'X' / ';' / '(') .)*
Err_044 <- (!('while' / 'until' / 'return' / 'repeat' / 'local' / 'if' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'X' / ';' / '(') .)*
Err_045 <- (!'=' .)*
Err_046 <- (!('~' / '{' / 'true' / 'not' / 'nil' / 'false' / 'X' / '9' / '8' / '7' / '6' / '5' / '4' / '3' / '2' / '1' / '0' / '-' / '(' / '#' / '"') .)*
Err_047 <- (!',' .)*
Err_048 <- (!('~' / '{' / 'true' / 'not' / 'nil' / 'false' / 'X' / '9' / '8' / '7' / '6' / '5' / '4' / '3' / '2' / '1' / '0' / '-' / '(' / '#' / '"') .)*
Err_049 <- (!('do' / ',') .)*
Err_050 <- (!'do' .)*
Err_051 <- (!('while' / 'return' / 'repeat' / 'local' / 'if' / 'for' / 'end' / 'do' / 'X' / ';' / '(') .)*
Err_052 <- (!('while' / 'until' / 'return' / 'repeat' / 'local' / 'if' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'X' / ';' / '(') .)*
Err_053 <- (!'=' .)*
Err_054 <- (!('~' / '{' / 'true' / 'not' / 'nil' / 'false' / 'X' / '9' / '8' / '7' / '6' / '5' / '4' / '3' / '2' / '1' / '0' / '-' / '(' / '#' / '"') .)*
Err_055 <- (!('while' / 'until' / 'return' / 'repeat' / 'local' / 'if' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'X' / ';' / '(') .)*
Err_056 <- (!'then' .)*
Err_057 <- (!('while' / 'return' / 'repeat' / 'local' / 'if' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'X' / ';' / '(') .)*
Err_058 <- (!('}' / 'while' / 'until' / 'then' / 'return' / 'repeat' / 'record' / 'local' / 'if' / 'function' / 'for' / 'end' / 'elseif' / 'else' / 'do' / ']' / 'X' / ';' / ',' / ')' / '(' / '$') .)*
Err_059 <- (!('}' / 'while' / 'until' / 'then' / 'return' / 'repeat' / 'record' / 'or' / 'local' / 'if' / 'function' / 'for' / 'end' / 'elseif' / 'else' / 'do' / ']' / 'X' / ';' / ',' / ')' / '(' / '$') .)*
Err_060 <- (!('}' / 'while' / 'until' / 'then' / 'return' / 'repeat' / 'record' / 'or' / 'local' / 'if' / 'function' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'and' / ']' / 'X' / ';' / ',' / ')' / '(' / '$') .)*
Err_061 <- (!('~=' / '}' / 'while' / 'until' / 'then' / 'return' / 'repeat' / 'record' / 'or' / 'local' / 'if' / 'function' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'and' / ']' / 'X' / '>=' / '>' / '==' / '<=' / '<' / ';' / ',' / ')' / '(' / '$') .)*
Err_062 <- (!('~=' / '}' / '|' / 'while' / 'until' / 'then' / 'return' / 'repeat' / 'record' / 'or' / 'local' / 'if' / 'function' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'and' / ']' / 'X' / '>=' / '>' / '==' / '<=' / '<' / ';' / ',' / ')' / '(' / '$') .)*
Err_063 <- (!('~=' / '~' / '}' / '|' / 'while' / 'until' / 'then' / 'return' / 'repeat' / 'record' / 'or' / 'local' / 'if' / 'function' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'and' / ']' / 'X' / '>=' / '>' / '==' / '<=' / '<' / ';' / ',' / ')' / '(' / '$') .)*
Err_064 <- (!('~=' / '~' / '}' / '|' / 'while' / 'until' / 'then' / 'return' / 'repeat' / 'record' / 'or' / 'local' / 'if' / 'function' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'and' / ']' / 'X' / '>=' / '>' / '==' / '<=' / '<' / ';' / ',' / ')' / '(' / '&' / '$') .)*
Err_065 <- (!('~=' / '~' / '}' / '|' / 'while' / 'until' / 'then' / 'return' / 'repeat' / 'record' / 'or' / 'local' / 'if' / 'function' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'and' / ']' / 'X' / '>>' / '>=' / '>' / '==' / '<=' / '<<' / '<' / ';' / ',' / ')' / '(' / '&' / '$') .)*
Err_066 <- (!('~=' / '~' / '}' / '|' / 'while' / 'until' / 'then' / 'return' / 'repeat' / 'record' / 'or' / 'local' / 'if' / 'function' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'and' / ']' / 'X' / '>>' / '>=' / '>' / '==' / '<=' / '<<' / '<' / ';' / '..' / ',' / ')' / '(' / '&' / '$') .)*
Err_067 <- (!('~=' / '~' / '}' / '|' / 'while' / 'until' / 'then' / 'return' / 'repeat' / 'record' / 'or' / 'local' / 'if' / 'function' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'and' / ']' / 'X' / '>>' / '>=' / '>' / '==' / '<=' / '<<' / '<' / ';' / '..' / '-' / ',' / '+' / ')' / '(' / '&' / '$') .)*
Err_068 <- (!('~=' / '~' / '}' / '|' / 'while' / 'until' / 'then' / 'return' / 'repeat' / 'record' / 'or' / 'local' / 'if' / 'function' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'and' / ']' / 'X' / '>>' / '>=' / '>' / '==' / '<=' / '<<' / '<' / ';' / '//' / '/' / '..' / '-' / ',' / '+' / '*' / ')' / '(' / '&' / '%%' / '$') .)*
Err_069 <- (!('{' / '(' / '"') .)*
Err_070 <- (!('~=' / '~' / '}' / '|' / '{' / 'while' / 'until' / 'then' / 'return' / 'repeat' / 'record' / 'or' / 'local' / 'if' / 'function' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'as' / 'and' / '^' / ']' / '[' / 'X' / '>>' / '>=' / '>' / '==' / '=' / '<=' / '<<' / '<' / ';' / ':' / '//' / '/' / '..' / '.' / '-' / ',' / '+' / '*' / ')' / '(' / '&' / '%%' / '$' / '"') .)*
Err_071 <- (!']' .)*
Err_072 <- (!('~=' / '~' / '}' / '|' / '{' / 'while' / 'until' / 'then' / 'return' / 'repeat' / 'record' / 'or' / 'local' / 'if' / 'function' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'as' / 'and' / '^' / ']' / '[' / 'X' / '>>' / '>=' / '>' / '==' / '=' / '<=' / '<<' / '<' / ';' / ':' / '//' / '/' / '..' / '.' / '-' / ',' / '+' / '*' / ')' / '(' / '&' / '%%' / '$' / '"') .)*
Err_073 <- (!('~=' / '~' / '}' / '|' / '{' / 'while' / 'until' / 'then' / 'return' / 'repeat' / 'record' / 'or' / 'local' / 'if' / 'function' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'as' / 'and' / '^' / ']' / '[' / 'X' / '>>' / '>=' / '>' / '==' / '=' / '<=' / '<<' / '<' / ';' / ':' / '//' / '/' / '..' / '.' / '-' / ',' / '+' / '*' / ')' / '(' / '&' / '%%' / '$' / '"') .)*
Err_074 <- (!')' .)*
Err_075 <- (!('~=' / '~' / '}' / '|' / '{' / 'while' / 'until' / 'then' / 'return' / 'repeat' / 'record' / 'or' / 'local' / 'if' / 'function' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'as' / 'and' / '^' / ']' / '[' / 'X' / '>>' / '>=' / '>' / '==' / '<=' / '<<' / '<' / ';' / ':' / '//' / '/' / '..' / '.' / '-' / ',' / '+' / '*' / ')' / '(' / '&' / '%%' / '$' / '"') .)*
Err_076 <- (!'=' .)*
Err_077 <- (!('~=' / '~' / '}' / '|' / '{' / 'while' / 'until' / 'then' / 'return' / 'repeat' / 'record' / 'or' / 'local' / 'if' / 'function' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'as' / 'and' / '^' / ']' / '[' / 'X' / '>>' / '>=' / '>' / '==' / '=' / '<=' / '<<' / '<' / ';' / ':' / '//' / '/' / '..' / '.' / '-' / ',' / '+' / '*' / ')' / '(' / '&' / '%%' / '$' / '"') .)*
Err_078 <- (!('while' / 'until' / 'return' / 'repeat' / 'local' / 'if' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'X' / ';' / ')' / '(') .)*
Err_079 <- (!('~=' / '~' / '}' / '|' / '{' / 'while' / 'until' / 'then' / 'return' / 'repeat' / 'record' / 'or' / 'local' / 'if' / 'function' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'as' / 'and' / '^' / ']' / '[' / 'X' / '>>' / '>=' / '>' / '==' / '=' / '<=' / '<<' / '<' / ';' / ':' / '//' / '/' / '..' / '.' / '-' / ',' / '+' / '*' / ')' / '(' / '&' / '%%' / '$' / '"') .)*
Err_080 <- (!('~=' / '~' / '}' / '|' / '{' / 'while' / 'until' / 'then' / 'return' / 'repeat' / 'record' / 'or' / 'local' / 'if' / 'function' / 'for' / 'end' / 'elseif' / 'else' / 'do' / 'as' / 'and' / '^' / ']' / '[' / 'X' / '>>' / '>=' / '>' / '==' / '=' / '<=' / '<<' / '<' / ';' / ':' / '//' / '/' / '..' / '.' / '-' / ',' / '+' / '*' / ')' / '(' / '&' / '%%' / '$' / '"') .)*

Loading