//SMALLTALK -------------------------> #( (ScannerReadaheadTable 1 (']' 'RK' 35) ('/' 'R' 10) ('{' 'RK' 36) ('}' 'RK' 37) ('"' 'R' 11) ('$' 'R' 12) ((256) 'L' 21) ('ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz' 'RK' 6) ('[' 'RK' 33) ('(' 'RK' 23) (')' 'RK' 24) ('*' 'RK' 25) ('+' 'RK' 26) ('-' 'RK' 2) ('&' 'RK' 22) ('.' 'RK' 3) ((9 10 12 13) 'R' 7) (' ' 'R' 7) ('0123456789' 'RK' 4) ('=' 'RK' 5) ('?' 'RK' 31) ('#' 'R' 8) ('|' 'RK' 34) ('''' 'R' 9)) (ScannerReadaheadTable 2 ((9 10 12 13 96 147 148 256) 'L' 27) ('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\*~=@%&?|<[]{}()^;#:.$''" ' 'L' 27) ('>' 'RK' 38)) (ScannerReadaheadTable 3 ((9 10 12 13 96 147 148 256) 'L' 28) ('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\*~=@%&?|<>[]{}()^;#:$''" ' 'L' 28) ('.' 'RK' 39)) (ScannerReadaheadTable 4 ((9 10 12 13 96 147 148 256) 'L' 29) ('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_!,+-/\*~=@%&?|<>[]{}()^;#:.$''" ' 'L' 29) ('0123456789' 'RK' 4)) (ScannerReadaheadTable 5 ((9 10 12 13 96 147 148 256) 'L' 30) ('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\*~=@%&?|<[]{}()^;#:.$''" ' 'L' 30) ('>' 'RK' 40)) (ScannerReadaheadTable 6 ((9 10 12 13 96 147 148 256) 'L' 32) ('!,+-/\*~=@%&?|<>[]{}()^;#.$''" ' 'L' 32) ('0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz' 'RK' 6)) (ScannerReadaheadTable 7 ((96 147 148 256) 'L' 1) ('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\*~=@%&?|<>[]{}()^;#:.$''"' 'L' 1) ((9 10 12 13) 'R' 7) (' ' 'R' 7)) (ScannerReadaheadTable 8 ('"' 'R' 14) ('''' 'R' 15) ('ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz' 'RK' 13)) (ScannerReadaheadTable 9 ((256) 'LK' 42) ('''' 'R' 16) ((9 10 12 13 96 147 148) 'RK' 9) (' !"#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_abcdefghijklmnopqrstuvwxyz{|}~' 'RK' 9)) (ScannerReadaheadTable 10 ((9 10 12 13) 'L' 44) (' ' 'L' 44) ((96 147 148 256) 'LK' 44) ('=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_\abcdefghijklmnopqrstuvwxyz{|}~!"#$%&''()*+,-.0123456789:;<' 'LK' 44) ('/' 'R' 17)) (ScannerReadaheadTable 11 ((256) 'LK' 45) ('"' 'R' 18) ((9 10 12 13 96 147 148) 'RK' 11) (' !#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_abcdefghijklmnopqrstuvwxyz{|}~' 'RK' 11)) (ScannerReadaheadTable 12 ((9 10 12 13 96 147 148) 'RK' 46) (' !"#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_abcdefghijklmnopqrstuvwxyz{|}~' 'RK' 46)) (ScannerReadaheadTable 13 ((9 10 12 13 96 147 148 256) 'L' 41) ('!,+-/\*~=@%&?|<>[]{}()^;#.$''" ' 'L' 41) ('0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz' 'RK' 13)) (ScannerReadaheadTable 14 ((256) 'LK' 47) ('"' 'R' 19) ((9 10 12 13 96 147 148) 'RK' 14) (' !#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_abcdefghijklmnopqrstuvwxyz{|}~' 'RK' 14)) (ScannerReadaheadTable 15 ((256) 'LK' 48) ('''' 'R' 20) ((9 10 12 13 96 147 148) 'RK' 15) (' !"#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_abcdefghijklmnopqrstuvwxyz{|}~' 'RK' 15)) (ScannerReadaheadTable 16 ((9 10 12 13 96 147 148 256) 'L' 43) ('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\*~=@%&?|<>[]{}()^;#:.$" ' 'L' 43) ('''' 'RK' 9)) (ScannerReadaheadTable 17 ((9 96 147 148) 'R' 17) ('=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&''()*+,-./0123456789:;<' 'R' 17) ((256) 'LK' 1) ((10 12 13) 'R' 1)) (ScannerReadaheadTable 18 ((9 10 12 13 96 147 148 256) 'L' 43) ('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\*~=@%&?|<>[]{}()^;#:.$'' ' 'L' 43) ('"' 'RK' 11)) (ScannerReadaheadTable 19 ((9 10 12 13 96 147 148 256) 'L' 41) ('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\*~=@%&?|<>[]{}()^;#:.$'' ' 'L' 41) ('"' 'RK' 14)) (ScannerReadaheadTable 20 ((9 10 12 13 96 147 148 256) 'L' 41) ('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\*~=@%&?|<>[]{}()^;#:.$" ' 'L' 41) ('''' 'RK' 15)) (SemanticTable 21 buildToken: '-|' 1) (SemanticTable 22 buildToken: And 1) (SemanticTable 23 buildToken: OpenRound 1) (SemanticTable 24 buildToken: CloseRound 1) (SemanticTable 25 buildToken: Star 1) (SemanticTable 26 buildToken: Plus 1) (SemanticTable 27 buildToken: Minus 1) (SemanticTable 28 buildToken: Dot 1) (SemanticTable 29 buildToken: walkInteger: 1) (SemanticTable 30 buildToken: Equals 1) (SemanticTable 31 buildToken: QuestionMark 1) (SemanticTable 32 buildToken: walkIdentifier: 1) (SemanticTable 33 buildToken: OpenSquare 1) (SemanticTable 34 buildToken: VerticalBar 1) (SemanticTable 35 buildToken: CloseSquare 1) (SemanticTable 36 buildToken: OpenCurly 1) (SemanticTable 37 buildToken: CloseCurly 1) (SemanticTable 38 buildToken: RightArrow 1) (SemanticTable 39 buildToken: DotDot 1) (SemanticTable 40 buildToken: FatRightArrow 1) (SemanticTable 41 buildToken: walkSymbol: 1) (SemanticTable 42 syntaxError: 'missing end quote for single quoted string' 43) (SemanticTable 43 buildToken: walkString: 1) (SemanticTable 44 syntaxError: '// is a comment, / alone is not valid' 1) (SemanticTable 45 syntaxError: 'missing end quote for double quoted string' 43) (SemanticTable 46 buildToken: walkCharacter: 1) (SemanticTable 47 syntaxError: 'missing end quote for double quoted string' 41) (SemanticTable 48 syntaxError: 'missing end quote for single quoted string' 41)) //RUBY -----------------------------------> [ [:ScannerReadaheadTable, 1, [']', 'RK', 35], ['/', 'R', 10], ['{', 'RK', 36], ['}', 'RK', 37], ['"', 'R', 11], ['$', 'R', 12], [[256], 'L', 21], ['ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz', 'RK', 6], ['[', 'RK', 33], ['(', 'RK', 23], [')', 'RK', 24], ['*', 'RK', 25], ['+', 'RK', 26], ['-', 'RK', 2], ['&', 'RK', 22], ['.', 'RK', 3], [[9, 10, 12, 13], 'R', 7], [' ', 'R', 7], ['0123456789', 'RK', 4], ['=', 'RK', 5], ['?', 'RK', 31], ['#', 'R', 8], ['|', 'RK', 34], ['\'', 'R', 9]], [:ScannerReadaheadTable, 2, [[9, 10, 12, 13, 96, 147, 148, 256], 'L', 27], ['ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<[]{}()^;#:.$\'" ', 'L', 27], ['>', 'RK', 38]], [:ScannerReadaheadTable, 3, [[9, 10, 12, 13, 96, 147, 148, 256], 'L', 28], ['ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:$\'" ', 'L', 28], ['.', 'RK', 39]], [:ScannerReadaheadTable, 4, [[9, 10, 12, 13, 96, 147, 148, 256], 'L', 29], ['ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_!,+-/\\*~=@%&?|<>[]{}()^;#:.$\'" ', 'L', 29], ['0123456789', 'RK', 4]], [:ScannerReadaheadTable, 5, [[9, 10, 12, 13, 96, 147, 148, 256], 'L', 30], ['ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<[]{}()^;#:.$\'" ', 'L', 30], ['>', 'RK', 40]], [:ScannerReadaheadTable, 6, [[9, 10, 12, 13, 96, 147, 148, 256], 'L', 32], ['!,+-/\\*~=@%&?|<>[]{}()^;#.$\'" ', 'L', 32], ['0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz', 'RK', 6]], [:ScannerReadaheadTable, 7, [[96, 147, 148, 256], 'L', 1], ['ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$\'"', 'L', 1], [[9, 10, 12, 13], 'R', 7], [' ', 'R', 7]], [:ScannerReadaheadTable, 8, ['"', 'R', 14], ['\'', 'R', 15], ['ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz', 'RK', 13]], [:ScannerReadaheadTable, 9, [[256], 'LK', 42], ['\'', 'R', 16], [[9, 10, 12, 13, 96, 147, 148], 'RK', 9], [' !"#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~', 'RK', 9]], [:ScannerReadaheadTable, 10, [[9, 10, 12, 13], 'L', 44], [' ', 'L', 44], [[96, 147, 148, 256], 'LK', 44], ['=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_\\abcdefghijklmnopqrstuvwxyz{|}~!"#$%&\'()*+,-.0123456789:;<', 'LK', 44], ['/', 'R', 17]], [:ScannerReadaheadTable, 11, [[256], 'LK', 45], ['"', 'R', 18], [[9, 10, 12, 13, 96, 147, 148], 'RK', 11], [' !#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~', 'RK', 11]], [:ScannerReadaheadTable, 12, [[9, 10, 12, 13, 96, 147, 148], 'RK', 46], [' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~', 'RK', 46]], [:ScannerReadaheadTable, 13, [[9, 10, 12, 13, 96, 147, 148, 256], 'L', 41], ['!,+-/\\*~=@%&?|<>[]{}()^;#.$\'" ', 'L', 41], ['0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz', 'RK', 13]], [:ScannerReadaheadTable, 14, [[256], 'LK', 47], ['"', 'R', 19], [[9, 10, 12, 13, 96, 147, 148], 'RK', 14], [' !#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~', 'RK', 14]], [:ScannerReadaheadTable, 15, [[256], 'LK', 48], ['\'', 'R', 20], [[9, 10, 12, 13, 96, 147, 148], 'RK', 15], [' !"#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~', 'RK', 15]], [:ScannerReadaheadTable, 16, [[9, 10, 12, 13, 96, 147, 148, 256], 'L', 43], ['ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$" ', 'L', 43], ['\'', 'RK', 9]], [:ScannerReadaheadTable, 17, [[9, 96, 147, 148], 'R', 17], ['=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&\'()*+,-./0123456789:;<', 'R', 17], [[256], 'LK', 1], [[10, 12, 13], 'R', 1]], [:ScannerReadaheadTable, 18, [[9, 10, 12, 13, 96, 147, 148, 256], 'L', 43], ['ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$\' ', 'L', 43], ['"', 'RK', 11]], [:ScannerReadaheadTable, 19, [[9, 10, 12, 13, 96, 147, 148, 256], 'L', 41], ['ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$\' ', 'L', 41], ['"', 'RK', 14]], [:ScannerReadaheadTable, 20, [[9, 10, 12, 13, 96, 147, 148, 256], 'L', 41], ['ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$" ', 'L', 41], ['\'', 'RK', 15]], [:SemanticTable, 21, :buildToken, '-|', 1], [:SemanticTable, 22, :buildToken, :And, 1], [:SemanticTable, 23, :buildToken, :OpenRound, 1], [:SemanticTable, 24, :buildToken, :CloseRound, 1], [:SemanticTable, 25, :buildToken, :Star, 1], [:SemanticTable, 26, :buildToken, :Plus, 1], [:SemanticTable, 27, :buildToken, :Minus, 1], [:SemanticTable, 28, :buildToken, :Dot, 1], [:SemanticTable, 29, :buildToken, :walkInteger, 1], [:SemanticTable, 30, :buildToken, :Equals, 1], [:SemanticTable, 31, :buildToken, :QuestionMark, 1], [:SemanticTable, 32, :buildToken, :walkIdentifier, 1], [:SemanticTable, 33, :buildToken, :OpenSquare, 1], [:SemanticTable, 34, :buildToken, :VerticalBar, 1], [:SemanticTable, 35, :buildToken, :CloseSquare, 1], [:SemanticTable, 36, :buildToken, :OpenCurly, 1], [:SemanticTable, 37, :buildToken, :CloseCurly, 1], [:SemanticTable, 38, :buildToken, :RightArrow, 1], [:SemanticTable, 39, :buildToken, :DotDot, 1], [:SemanticTable, 40, :buildToken, :FatRightArrow, 1], [:SemanticTable, 41, :buildToken, :walkSymbol, 1], [:SemanticTable, 42, :syntaxError, 'missing end quote for single quoted string', 43], [:SemanticTable, 43, :buildToken, :walkString, 1], [:SemanticTable, 44, :syntaxError, '// is a comment, / alone is not valid', 1], [:SemanticTable, 45, :syntaxError, 'missing end quote for double quoted string', 43], [:SemanticTable, 46, :buildToken, :walkCharacter, 1], [:SemanticTable, 47, :syntaxError, 'missing end quote for double quoted string', 41], [:SemanticTable, 48, :syntaxError, 'missing end quote for single quoted string', 41]] //C++: ONE EXPRESSION VERSION ----------------------> //For scanningTables.h //NOTE: Strings are not allocated with new since they exist globally as part of the compiled code. struct RawScannerReadaheadTriple {const char *string; const char *attributes; long gotoTableNumber;}; //Note: string == NULL is equivalent to "{256}" (end of file). struct RawScannerReadaheadTable {const char *name; long stateNumber; long size; RawScannerReadaheadTriple **triples;}; struct RawSemanticTable {const char *name; long stateNumber; const char *action; long size; const char **parameters; long gotoTableNumber;}; struct ScannerTables { long scannerReadaheadTablesSize; RawScannerReadaheadTable **scannerReadaheadTables; long semanticTablesSize; RawSemanticTable **semanticTables; }; ScannerTables *scannerTables(); void deleteScannerTables(ScannerTables *scannerTable); //For scanningTables.cpp ScannerTables *scannerTables () { return new ScannerTables { 20, new RawScannerReadaheadTable* [20] { new RawScannerReadaheadTable {"ScannerReadaheadTable", 0, 24, new RawScannerReadaheadTriple* [24] { new RawScannerReadaheadTriple {"]", "RK", 34}, new RawScannerReadaheadTriple {"/", "R", 9}, new RawScannerReadaheadTriple {"{", "RK", 35}, new RawScannerReadaheadTriple {"}", "RK", 36}, new RawScannerReadaheadTriple {"\"", "R", 10}, new RawScannerReadaheadTriple {"$", "R", 11}, new RawScannerReadaheadTriple {NULL, "L", 20}, new RawScannerReadaheadTriple {"ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 5}, new RawScannerReadaheadTriple {"[", "RK", 32}, new RawScannerReadaheadTriple {"(", "RK", 22}, new RawScannerReadaheadTriple {")", "RK", 23}, new RawScannerReadaheadTriple {"*", "RK", 24}, new RawScannerReadaheadTriple {"+", "RK", 25}, new RawScannerReadaheadTriple {"-", "RK", 1}, new RawScannerReadaheadTriple {"&", "RK", 21}, new RawScannerReadaheadTriple {".", "RK", 2}, new RawScannerReadaheadTriple {"\011\012\014\015", "R", 6}, new RawScannerReadaheadTriple {" ", "R", 6}, new RawScannerReadaheadTriple {"0123456789", "RK", 3}, new RawScannerReadaheadTriple {"=", "RK", 4}, new RawScannerReadaheadTriple {"?", "RK", 30}, new RawScannerReadaheadTriple {"#", "R", 7}, new RawScannerReadaheadTriple {"|", "RK", 33}, new RawScannerReadaheadTriple {"'", "R", 8}}}, new RawScannerReadaheadTable {"ScannerReadaheadTable", 1, 4, new RawScannerReadaheadTriple* [4] { new RawScannerReadaheadTriple {"\011\012\014\015\140\223\224", "L", 26}, new RawScannerReadaheadTriple {NULL, "L", 26}, new RawScannerReadaheadTriple {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<[]{}()^;#:.$'\" ", "L", 26}, new RawScannerReadaheadTriple {">", "RK", 37}}}, new RawScannerReadaheadTable {"ScannerReadaheadTable", 2, 4, new RawScannerReadaheadTriple* [4] { new RawScannerReadaheadTriple {"\011\012\014\015\140\223\224", "L", 27}, new RawScannerReadaheadTriple {NULL, "L", 27}, new RawScannerReadaheadTriple {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:$'\" ", "L", 27}, new RawScannerReadaheadTriple {".", "RK", 38}}}, new RawScannerReadaheadTable {"ScannerReadaheadTable", 3, 4, new RawScannerReadaheadTriple* [4] { new RawScannerReadaheadTriple {"\011\012\014\015\140\223\224", "L", 28}, new RawScannerReadaheadTriple {NULL, "L", 28}, new RawScannerReadaheadTriple {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_!,+-/\\*~=@%&?|<>[]{}()^;#:.$'\" ", "L", 28}, new RawScannerReadaheadTriple {"0123456789", "RK", 3}}}, new RawScannerReadaheadTable {"ScannerReadaheadTable", 4, 4, new RawScannerReadaheadTriple* [4] { new RawScannerReadaheadTriple {"\011\012\014\015\140\223\224", "L", 29}, new RawScannerReadaheadTriple {NULL, "L", 29}, new RawScannerReadaheadTriple {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<[]{}()^;#:.$'\" ", "L", 29}, new RawScannerReadaheadTriple {">", "RK", 39}}}, new RawScannerReadaheadTable {"ScannerReadaheadTable", 5, 4, new RawScannerReadaheadTriple* [4] { new RawScannerReadaheadTriple {"\011\012\014\015\140\223\224", "L", 31}, new RawScannerReadaheadTriple {NULL, "L", 31}, new RawScannerReadaheadTriple {"!,+-/\\*~=@%&?|<>[]{}()^;#.$'\" ", "L", 31}, new RawScannerReadaheadTriple {"0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 5}}}, new RawScannerReadaheadTable {"ScannerReadaheadTable", 6, 5, new RawScannerReadaheadTriple* [5] { new RawScannerReadaheadTriple {"\140\223\224", "L", 0}, new RawScannerReadaheadTriple {NULL, "L", 0}, new RawScannerReadaheadTriple {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$'\"", "L", 0}, new RawScannerReadaheadTriple {"\011\012\014\015", "R", 6}, new RawScannerReadaheadTriple {" ", "R", 6}}}, new RawScannerReadaheadTable {"ScannerReadaheadTable", 7, 3, new RawScannerReadaheadTriple* [3] { new RawScannerReadaheadTriple {"\"", "R", 13}, new RawScannerReadaheadTriple {"'", "R", 14}, new RawScannerReadaheadTriple {"ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 12}}}, new RawScannerReadaheadTable {"ScannerReadaheadTable", 8, 4, new RawScannerReadaheadTriple* [4] { new RawScannerReadaheadTriple {NULL, "LK", 41}, new RawScannerReadaheadTriple {"'", "R", 15}, new RawScannerReadaheadTriple {"\011\012\014\015\140\223\224", "RK", 8}, new RawScannerReadaheadTriple {" !\"#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 8}}}, new RawScannerReadaheadTable {"ScannerReadaheadTable", 9, 6, new RawScannerReadaheadTriple* [6] { new RawScannerReadaheadTriple {"\011\012\014\015", "L", 43}, new RawScannerReadaheadTriple {" ", "L", 43}, new RawScannerReadaheadTriple {"\140\223\224", "LK", 43}, new RawScannerReadaheadTriple {NULL, "LK", 43}, new RawScannerReadaheadTriple {"=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_\\abcdefghijklmnopqrstuvwxyz{|}~!\"#$%&'()*+,-.0123456789:;<", "LK", 43}, new RawScannerReadaheadTriple {"/", "R", 16}}}, new RawScannerReadaheadTable {"ScannerReadaheadTable", 10, 4, new RawScannerReadaheadTriple* [4] { new RawScannerReadaheadTriple {NULL, "LK", 44}, new RawScannerReadaheadTriple {"\"", "R", 17}, new RawScannerReadaheadTriple {"\011\012\014\015\140\223\224", "RK", 10}, new RawScannerReadaheadTriple {" !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 10}}}, new RawScannerReadaheadTable {"ScannerReadaheadTable", 11, 2, new RawScannerReadaheadTriple* [2] { new RawScannerReadaheadTriple {"\011\012\014\015\140\223\224", "RK", 45}, new RawScannerReadaheadTriple {" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 45}}}, new RawScannerReadaheadTable {"ScannerReadaheadTable", 12, 4, new RawScannerReadaheadTriple* [4] { new RawScannerReadaheadTriple {"\011\012\014\015\140\223\224", "L", 40}, new RawScannerReadaheadTriple {NULL, "L", 40}, new RawScannerReadaheadTriple {"!,+-/\\*~=@%&?|<>[]{}()^;#.$'\" ", "L", 40}, new RawScannerReadaheadTriple {"0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 12}}}, new RawScannerReadaheadTable {"ScannerReadaheadTable", 13, 4, new RawScannerReadaheadTriple* [4] { new RawScannerReadaheadTriple {NULL, "LK", 46}, new RawScannerReadaheadTriple {"\"", "R", 18}, new RawScannerReadaheadTriple {"\011\012\014\015\140\223\224", "RK", 13}, new RawScannerReadaheadTriple {" !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 13}}}, new RawScannerReadaheadTable {"ScannerReadaheadTable", 14, 4, new RawScannerReadaheadTriple* [4] { new RawScannerReadaheadTriple {NULL, "LK", 47}, new RawScannerReadaheadTriple {"'", "R", 19}, new RawScannerReadaheadTriple {"\011\012\014\015\140\223\224", "RK", 14}, new RawScannerReadaheadTriple {" !\"#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 14}}}, new RawScannerReadaheadTable {"ScannerReadaheadTable", 15, 4, new RawScannerReadaheadTriple* [4] { new RawScannerReadaheadTriple {"\011\012\014\015\140\223\224", "L", 42}, new RawScannerReadaheadTriple {NULL, "L", 42}, new RawScannerReadaheadTriple {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$\" ", "L", 42}, new RawScannerReadaheadTriple {"'", "RK", 8}}}, new RawScannerReadaheadTable {"ScannerReadaheadTable", 16, 4, new RawScannerReadaheadTriple* [4] { new RawScannerReadaheadTriple {"\011\140\223\224", "R", 16}, new RawScannerReadaheadTriple {"=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~ !\"#$%&'()*+,-./0123456789:;<", "R", 16}, new RawScannerReadaheadTriple {NULL, "LK", 0}, new RawScannerReadaheadTriple {"\012\014\015", "R", 0}}}, new RawScannerReadaheadTable {"ScannerReadaheadTable", 17, 4, new RawScannerReadaheadTriple* [4] { new RawScannerReadaheadTriple {"\011\012\014\015\140\223\224", "L", 42}, new RawScannerReadaheadTriple {NULL, "L", 42}, new RawScannerReadaheadTriple {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$' ", "L", 42}, new RawScannerReadaheadTriple {"\"", "RK", 10}}}, new RawScannerReadaheadTable {"ScannerReadaheadTable", 18, 4, new RawScannerReadaheadTriple* [4] { new RawScannerReadaheadTriple {"\011\012\014\015\140\223\224", "L", 40}, new RawScannerReadaheadTriple {NULL, "L", 40}, new RawScannerReadaheadTriple {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$' ", "L", 40}, new RawScannerReadaheadTriple {"\"", "RK", 13}}}, new RawScannerReadaheadTable {"ScannerReadaheadTable", 19, 4, new RawScannerReadaheadTriple* [4] { new RawScannerReadaheadTriple {"\011\012\014\015\140\223\224", "L", 40}, new RawScannerReadaheadTriple {NULL, "L", 40}, new RawScannerReadaheadTriple {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$\" ", "L", 40}, new RawScannerReadaheadTriple {"'", "RK", 14}}}}, 28, new RawSemanticTable* [28] { new RawSemanticTable {"SemanticTable", 20, "buildToken", 1, new const char * [1] {"-|"}, 0}, new RawSemanticTable {"SemanticTable", 21, "buildToken", 1, new const char * [1] {"And"}, 0}, new RawSemanticTable {"SemanticTable", 22, "buildToken", 1, new const char * [1] {"OpenRound"}, 0}, new RawSemanticTable {"SemanticTable", 23, "buildToken", 1, new const char * [1] {"CloseRound"}, 0}, new RawSemanticTable {"SemanticTable", 24, "buildToken", 1, new const char * [1] {"Star"}, 0}, new RawSemanticTable {"SemanticTable", 25, "buildToken", 1, new const char * [1] {"Plus"}, 0}, new RawSemanticTable {"SemanticTable", 26, "buildToken", 1, new const char * [1] {"Minus"}, 0}, new RawSemanticTable {"SemanticTable", 27, "buildToken", 1, new const char * [1] {"Dot"}, 0}, new RawSemanticTable {"SemanticTable", 28, "buildToken", 1, new const char * [1] {"walkInteger"}, 0}, new RawSemanticTable {"SemanticTable", 29, "buildToken", 1, new const char * [1] {"Equals"}, 0}, new RawSemanticTable {"SemanticTable", 30, "buildToken", 1, new const char * [1] {"QuestionMark"}, 0}, new RawSemanticTable {"SemanticTable", 31, "buildToken", 1, new const char * [1] {"walkIdentifier"}, 0}, new RawSemanticTable {"SemanticTable", 32, "buildToken", 1, new const char * [1] {"OpenSquare"}, 0}, new RawSemanticTable {"SemanticTable", 33, "buildToken", 1, new const char * [1] {"VerticalBar"}, 0}, new RawSemanticTable {"SemanticTable", 34, "buildToken", 1, new const char * [1] {"CloseSquare"}, 0}, new RawSemanticTable {"SemanticTable", 35, "buildToken", 1, new const char * [1] {"OpenCurly"}, 0}, new RawSemanticTable {"SemanticTable", 36, "buildToken", 1, new const char * [1] {"CloseCurly"}, 0}, new RawSemanticTable {"SemanticTable", 37, "buildToken", 1, new const char * [1] {"RightArrow"}, 0}, new RawSemanticTable {"SemanticTable", 38, "buildToken", 1, new const char * [1] {"DotDot"}, 0}, new RawSemanticTable {"SemanticTable", 39, "buildToken", 1, new const char * [1] {"FatRightArrow"}, 0}, new RawSemanticTable {"SemanticTable", 40, "buildToken", 1, new const char * [1] {"walkSymbol"}, 0}, new RawSemanticTable {"SemanticTable", 41, "syntaxError", 1, new const char * [1] {"missing end quote for single quoted string"}, 42}, new RawSemanticTable {"SemanticTable", 42, "buildToken", 1, new const char * [1] {"walkString"}, 0}, new RawSemanticTable {"SemanticTable", 43, "syntaxError", 1, new const char * [1] {"// is a comment, / alone is not valid"}, 0}, new RawSemanticTable {"SemanticTable", 44, "syntaxError", 1, new const char * [1] {"missing end quote for double quoted string"}, 42}, new RawSemanticTable {"SemanticTable", 45, "buildToken", 1, new const char * [1] {"walkCharacter"}, 0}, new RawSemanticTable {"SemanticTable", 46, "syntaxError", 1, new const char * [1] {"missing end quote for double quoted string"}, 40}, new RawSemanticTable {"SemanticTable", 47, "syntaxError", 1, new const char * [1] {"missing end quote for single quoted string"}, 40}}}; }; void deleteScannerTables (ScannerTables *scannerTable) { for (long index0 = 0; index0 < scannerTable->scannerReadaheadTablesSize; index0++) { for (long index1 = 0; index1< scannerTable->scannerReadaheadTables [index0]->size; index1++) { delete scannerTable->scannerReadaheadTables [index0]->triples [index1]; } delete [] scannerTable->scannerReadaheadTables [index0]->triples; delete scannerTable->scannerReadaheadTables [index0]; } delete [] scannerTable->scannerReadaheadTables; for (long index = 0; index < scannerTable->semanticTablesSize; index++) { delete [] scannerTable->semanticTables [index]->parameters; delete scannerTable->semanticTables [index]; } delete [] scannerTable->semanticTables; delete scannerTable; } //C++: MULTI-STATEMENT VERSION ----------------------> //NOTE: The following declarations should probably be moved manually to a more global location for access elsewhere... //NOTE: Strings are not allocated with new since they exist globally as part of the compiled code. struct RawScannerReadaheadTriple {const char *string; const char *attributes; long gotoTableNumber;}; //Note: string == NULL is equivalent to "{256}" (end of file). struct RawScannerReadaheadTable {const char *name; long stateNumber; long size; RawScannerReadaheadTriple *triples;}; struct RawSemanticTable {const char *name; long stateNumber; const char *action; long size; const char **parameters; long gotoTableNumber;}; struct ScannerTables { long scannerReadaheadTablesSize; RawScannerReadaheadTable *scannerReadaheadTables; long semanticTablesSize; RawSemanticTable *semanticTables; }; ScannerTables *scannerTables () { //Define VARIABLES to refer to scanner readahead table TRIPLEs. //FORMAT: RawScannerReadaheadTriple {const char *string; const char *attributes; long gotoTableNumber;} //Note: string == NULL is equivalent to "{256}" (end of file). RawScannerReadaheadTriple *t0 = new RawScannerReadaheadTriple [24] {{"]", "RK", 34}, {"/", "R", 9}, {"{", "RK", 35}, {"}", "RK", 36}, {"\"", "R", 10}, {"$", "R", 11}, {NULL, "L", 20}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 5}, {"[", "RK", 32}, {"(", "RK", 22}, {")", "RK", 23}, {"*", "RK", 24}, {"+", "RK", 25}, {"-", "RK", 1}, {"&", "RK", 21}, {".", "RK", 2}, {"\011\012\014\015", "R", 6}, {" ", "R", 6}, {"0123456789", "RK", 3}, {"=", "RK", 4}, {"?", "RK", 30}, {"#", "R", 7}, {"|", "RK", 33}, {"'", "R", 8}}; RawScannerReadaheadTriple *t1 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 26}, {NULL, "L", 26}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<[]{}()^;#:.$'\" ", "L", 26}, {">", "RK", 37}}; RawScannerReadaheadTriple *t2 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 27}, {NULL, "L", 27}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:$'\" ", "L", 27}, {".", "RK", 38}}; RawScannerReadaheadTriple *t3 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 28}, {NULL, "L", 28}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_!,+-/\\*~=@%&?|<>[]{}()^;#:.$'\" ", "L", 28}, {"0123456789", "RK", 3}}; RawScannerReadaheadTriple *t4 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 29}, {NULL, "L", 29}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<[]{}()^;#:.$'\" ", "L", 29}, {">", "RK", 39}}; RawScannerReadaheadTriple *t5 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 31}, {NULL, "L", 31}, {"!,+-/\\*~=@%&?|<>[]{}()^;#.$'\" ", "L", 31}, {"0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 5}}; RawScannerReadaheadTriple *t6 = new RawScannerReadaheadTriple [5] {{"\140\223\224", "L", 0}, {NULL, "L", 0}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$'\"", "L", 0}, {"\011\012\014\015", "R", 6}, {" ", "R", 6}}; RawScannerReadaheadTriple *t7 = new RawScannerReadaheadTriple [3] {{"\"", "R", 13}, {"'", "R", 14}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 12}}; RawScannerReadaheadTriple *t8 = new RawScannerReadaheadTriple [4] {{NULL, "LK", 41}, {"'", "R", 15}, {"\011\012\014\015\140\223\224", "RK", 8}, {" !\"#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 8}}; RawScannerReadaheadTriple *t9 = new RawScannerReadaheadTriple [6] {{"\011\012\014\015", "L", 43}, {" ", "L", 43}, {"\140\223\224", "LK", 43}, {NULL, "LK", 43}, {"=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_\\abcdefghijklmnopqrstuvwxyz{|}~!\"#$%&'()*+,-.0123456789:;<", "LK", 43}, {"/", "R", 16}}; RawScannerReadaheadTriple *t10 = new RawScannerReadaheadTriple [4] {{NULL, "LK", 44}, {"\"", "R", 17}, {"\011\012\014\015\140\223\224", "RK", 10}, {" !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 10}}; RawScannerReadaheadTriple *t11 = new RawScannerReadaheadTriple [2] {{"\011\012\014\015\140\223\224", "RK", 45}, {" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 45}}; RawScannerReadaheadTriple *t12 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 40}, {NULL, "L", 40}, {"!,+-/\\*~=@%&?|<>[]{}()^;#.$'\" ", "L", 40}, {"0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 12}}; RawScannerReadaheadTriple *t13 = new RawScannerReadaheadTriple [4] {{NULL, "LK", 46}, {"\"", "R", 18}, {"\011\012\014\015\140\223\224", "RK", 13}, {" !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 13}}; RawScannerReadaheadTriple *t14 = new RawScannerReadaheadTriple [4] {{NULL, "LK", 47}, {"'", "R", 19}, {"\011\012\014\015\140\223\224", "RK", 14}, {" !\"#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 14}}; RawScannerReadaheadTriple *t15 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 42}, {NULL, "L", 42}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$\" ", "L", 42}, {"'", "RK", 8}}; RawScannerReadaheadTriple *t16 = new RawScannerReadaheadTriple [4] {{"\011\140\223\224", "R", 16}, {"=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~ !\"#$%&'()*+,-./0123456789:;<", "R", 16}, {NULL, "LK", 0}, {"\012\014\015", "R", 0}}; RawScannerReadaheadTriple *t17 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 42}, {NULL, "L", 42}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$' ", "L", 42}, {"\"", "RK", 10}}; RawScannerReadaheadTriple *t18 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 40}, {NULL, "L", 40}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$' ", "L", 40}, {"\"", "RK", 13}}; RawScannerReadaheadTriple *t19 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 40}, {NULL, "L", 40}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$\" ", "L", 40}, {"'", "RK", 14}}; //Define an array of scanner readahead tables. //FORMAT: RawScannerReadaheadTable {const char *name; long stateNumber; long size; RawScannerReadaheadTriple *triples;} RawScannerReadaheadTable *scannerReadaheadTables = new RawScannerReadaheadTable [20] { {"ScannerReadaheadTable", 0, 24, &t0[0]}, {"ScannerReadaheadTable", 1, 4, &t1[0]}, {"ScannerReadaheadTable", 2, 4, &t2[0]}, {"ScannerReadaheadTable", 3, 4, &t3[0]}, {"ScannerReadaheadTable", 4, 4, &t4[0]}, {"ScannerReadaheadTable", 5, 4, &t5[0]}, {"ScannerReadaheadTable", 6, 5, &t6[0]}, {"ScannerReadaheadTable", 7, 3, &t7[0]}, {"ScannerReadaheadTable", 8, 4, &t8[0]}, {"ScannerReadaheadTable", 9, 6, &t9[0]}, {"ScannerReadaheadTable", 10, 4, &t10[0]}, {"ScannerReadaheadTable", 11, 2, &t11[0]}, {"ScannerReadaheadTable", 12, 4, &t12[0]}, {"ScannerReadaheadTable", 13, 4, &t13[0]}, {"ScannerReadaheadTable", 14, 4, &t14[0]}, {"ScannerReadaheadTable", 15, 4, &t15[0]}, {"ScannerReadaheadTable", 16, 4, &t16[0]}, {"ScannerReadaheadTable", 17, 4, &t17[0]}, {"ScannerReadaheadTable", 18, 4, &t18[0]}, {"ScannerReadaheadTable", 19, 4, &t19[0]}}; //Define VARIABLES to refer to semantic table PARAMETERs. //FORMAT {string0, string1, ...} const char **p20 = new const char * [1] {"-|"}; const char **p21 = new const char * [1] {"And"}; const char **p22 = new const char * [1] {"OpenRound"}; const char **p23 = new const char * [1] {"CloseRound"}; const char **p24 = new const char * [1] {"Star"}; const char **p25 = new const char * [1] {"Plus"}; const char **p26 = new const char * [1] {"Minus"}; const char **p27 = new const char * [1] {"Dot"}; const char **p28 = new const char * [1] {"walkInteger:"}; const char **p29 = new const char * [1] {"Equals"}; const char **p30 = new const char * [1] {"QuestionMark"}; const char **p31 = new const char * [1] {"walkIdentifier:"}; const char **p32 = new const char * [1] {"OpenSquare"}; const char **p33 = new const char * [1] {"VerticalBar"}; const char **p34 = new const char * [1] {"CloseSquare"}; const char **p35 = new const char * [1] {"OpenCurly"}; const char **p36 = new const char * [1] {"CloseCurly"}; const char **p37 = new const char * [1] {"RightArrow"}; const char **p38 = new const char * [1] {"DotDot"}; const char **p39 = new const char * [1] {"FatRightArrow"}; const char **p40 = new const char * [1] {"walkSymbol:"}; const char **p41 = new const char * [1] {"missing end quote for single quoted string"}; const char **p42 = new const char * [1] {"walkString:"}; const char **p43 = new const char * [1] {"// is a comment, / alone is not valid"}; const char **p44 = new const char * [1] {"missing end quote for double quoted string"}; const char **p45 = new const char * [1] {"walkCharacter:"}; const char **p46 = new const char * [1] {"missing end quote for double quoted string"}; const char **p47 = new const char * [1] {"missing end quote for single quoted string"}; //Define an array of semantic tables. //FORMAT SemanticTable {const char *name; long stateNumber; const char *action; long size; const char **parameters; long gotoTableNumber;} RawSemanticTable *semanticTables = new RawSemanticTable [28] { {"SemanticTable", 20, "buildToken", 1, p20, 0}, {"SemanticTable", 21, "buildToken", 1, p21, 0}, {"SemanticTable", 22, "buildToken", 1, p22, 0}, {"SemanticTable", 23, "buildToken", 1, p23, 0}, {"SemanticTable", 24, "buildToken", 1, p24, 0}, {"SemanticTable", 25, "buildToken", 1, p25, 0}, {"SemanticTable", 26, "buildToken", 1, p26, 0}, {"SemanticTable", 27, "buildToken", 1, p27, 0}, {"SemanticTable", 28, "buildToken", 1, p28, 0}, {"SemanticTable", 29, "buildToken", 1, p29, 0}, {"SemanticTable", 30, "buildToken", 1, p30, 0}, {"SemanticTable", 31, "buildToken", 1, p31, 0}, {"SemanticTable", 32, "buildToken", 1, p32, 0}, {"SemanticTable", 33, "buildToken", 1, p33, 0}, {"SemanticTable", 34, "buildToken", 1, p34, 0}, {"SemanticTable", 35, "buildToken", 1, p35, 0}, {"SemanticTable", 36, "buildToken", 1, p36, 0}, {"SemanticTable", 37, "buildToken", 1, p37, 0}, {"SemanticTable", 38, "buildToken", 1, p38, 0}, {"SemanticTable", 39, "buildToken", 1, p39, 0}, {"SemanticTable", 40, "buildToken", 1, p40, 0}, {"SemanticTable", 41, "syntaxError", 1, p41, 42}, {"SemanticTable", 42, "buildToken", 1, p42, 0}, {"SemanticTable", 43, "syntaxError", 1, p43, 0}, {"SemanticTable", 44, "syntaxError", 1, p44, 42}, {"SemanticTable", 45, "buildToken", 1, p45, 0}, {"SemanticTable", 46, "syntaxError", 1, p46, 40}, {"SemanticTable", 47, "syntaxError", 1, p47, 40} }; ScannerTables *scannerTables = new ScannerTables { 20, scannerReadaheadTables, 28, semanticTables }; return scannerTables; } void deleteScannerTables (ScannerTables *scannerTable) { for (long index = 0; index < scannerTable->scannerReadaheadTablesSize; index++) { RawScannerReadaheadTable &scannerReadaheadTable = scannerTable->scannerReadaheadTables [index]; for (long index2 = 0; index2 < scannerReadaheadTable.size; index2++) { delete [] scannerReadaheadTable.triples [index2].string; } delete [] scannerReadaheadTable.triples; } delete [] scannerTable->scannerReadaheadTables; for (long index = 0; index < scannerTable->semanticTablesSize; index++) { delete [] scannerTable->semanticTables [index].parameters; } delete [] scannerTable->semanticTables; } //C++98 -----------------------------------> //NOTE: The following declarations should probably be moved manually to a more global location for access elsewhere... //NOTE: Strings are not allocated with new since they exist globally as part of the compiled code. struct RawScannerReadaheadTriple {const char *string; const char *attributes; long gotoTableNumber;}; //Note: string == NULL is equivalent to "{256}" (end of file). struct RawScannerReadaheadTable {const char *name; long stateNumber; long size; RawScannerReadaheadTriple *triples;}; struct RawSemanticTable {const char *name; long stateNumber; const char *action; long size; const char **parameters; long gotoTableNumber;}; struct ScannerTables { long scannerReadaheadTablesSize; RawScannerReadaheadTable *scannerReadaheadTables; long semanticTablesSize; RawSemanticTable *semanticTables; }; #define copy(a,b) CopyMemory (a, b, sizeof (b)) ScannerTables *scannerTables () { //Define VARIABLES to refer to scanner readahead table TRIPLEs. //FORMAT: RawScannerReadaheadTriple {const char *string; const char *attributes; long gotoTableNumber;} //Note: string == NULL is equivalent to "{256}" (end of file). RawScannerReadaheadTriple *t0 = new RawScannerReadaheadTriple [24] {{"]", "RK", 34}, {"/", "R", 9}, {"{", "RK", 35}, {"}", "RK", 36}, {"\"", "R", 10}, {"$", "R", 11}, {NULL, "L", 20}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 5}, {"[", "RK", 32}, {"(", "RK", 22}, {")", "RK", 23}, {"*", "RK", 24}, {"+", "RK", 25}, {"-", "RK", 1}, {"&", "RK", 21}, {".", "RK", 2}, {"\011\012\014\015", "R", 6}, {" ", "R", 6}, {"0123456789", "RK", 3}, {"=", "RK", 4}, {"?", "RK", 30}, {"#", "R", 7}, {"|", "RK", 33}, {"'", "R", 8}}; RawScannerReadaheadTriple *t1 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 26}, {NULL, "L", 26}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<[]{}()^;#:.$'\" ", "L", 26}, {">", "RK", 37}}; RawScannerReadaheadTriple *t2 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 27}, {NULL, "L", 27}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:$'\" ", "L", 27}, {".", "RK", 38}}; RawScannerReadaheadTriple *t3 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 28}, {NULL, "L", 28}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_!,+-/\\*~=@%&?|<>[]{}()^;#:.$'\" ", "L", 28}, {"0123456789", "RK", 3}}; RawScannerReadaheadTriple *t4 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 29}, {NULL, "L", 29}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<[]{}()^;#:.$'\" ", "L", 29}, {">", "RK", 39}}; RawScannerReadaheadTriple *t5 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 31}, {NULL, "L", 31}, {"!,+-/\\*~=@%&?|<>[]{}()^;#.$'\" ", "L", 31}, {"0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 5}}; RawScannerReadaheadTriple *t6 = new RawScannerReadaheadTriple [5] {{"\140\223\224", "L", 0}, {NULL, "L", 0}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$'\"", "L", 0}, {"\011\012\014\015", "R", 6}, {" ", "R", 6}}; RawScannerReadaheadTriple *t7 = new RawScannerReadaheadTriple [3] {{"\"", "R", 13}, {"'", "R", 14}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 12}}; RawScannerReadaheadTriple *t8 = new RawScannerReadaheadTriple [4] {{NULL, "LK", 41}, {"'", "R", 15}, {"\011\012\014\015\140\223\224", "RK", 8}, {" !\"#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 8}}; RawScannerReadaheadTriple *t9 = new RawScannerReadaheadTriple [6] {{"\011\012\014\015", "L", 43}, {" ", "L", 43}, {"\140\223\224", "LK", 43}, {NULL, "LK", 43}, {"=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_\\abcdefghijklmnopqrstuvwxyz{|}~!\"#$%&'()*+,-.0123456789:;<", "LK", 43}, {"/", "R", 16}}; RawScannerReadaheadTriple *t10 = new RawScannerReadaheadTriple [4] {{NULL, "LK", 44}, {"\"", "R", 17}, {"\011\012\014\015\140\223\224", "RK", 10}, {" !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 10}}; RawScannerReadaheadTriple *t11 = new RawScannerReadaheadTriple [2] {{"\011\012\014\015\140\223\224", "RK", 45}, {" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 45}}; RawScannerReadaheadTriple *t12 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 40}, {NULL, "L", 40}, {"!,+-/\\*~=@%&?|<>[]{}()^;#.$'\" ", "L", 40}, {"0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 12}}; RawScannerReadaheadTriple *t13 = new RawScannerReadaheadTriple [4] {{NULL, "LK", 46}, {"\"", "R", 18}, {"\011\012\014\015\140\223\224", "RK", 13}, {" !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 13}}; RawScannerReadaheadTriple *t14 = new RawScannerReadaheadTriple [4] {{NULL, "LK", 47}, {"'", "R", 19}, {"\011\012\014\015\140\223\224", "RK", 14}, {" !\"#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 14}}; RawScannerReadaheadTriple *t15 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 42}, {NULL, "L", 42}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$\" ", "L", 42}, {"'", "RK", 8}}; RawScannerReadaheadTriple *t16 = new RawScannerReadaheadTriple [4] {{"\011\140\223\224", "R", 16}, {"=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~ !\"#$%&'()*+,-./0123456789:;<", "R", 16}, {NULL, "LK", 0}, {"\012\014\015", "R", 0}}; RawScannerReadaheadTriple *t17 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 42}, {NULL, "L", 42}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$' ", "L", 42}, {"\"", "RK", 10}}; RawScannerReadaheadTriple *t18 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 40}, {NULL, "L", 40}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$' ", "L", 40}, {"\"", "RK", 13}}; RawScannerReadaheadTriple *t19 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 40}, {NULL, "L", 40}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$\" ", "L", 40}, {"'", "RK", 14}}; //Define an array of scanner readahead tables. //FORMAT: RawScannerReadaheadTable {const char *name; long stateNumber; long size; RawScannerReadaheadTriple *triples;} RawScannerReadaheadTable *scannerReadaheadTables = new RawScannerReadaheadTable [20] { {"ScannerReadaheadTable", 0, 24, &t0[0]}, {"ScannerReadaheadTable", 1, 4, &t1[0]}, {"ScannerReadaheadTable", 2, 4, &t2[0]}, {"ScannerReadaheadTable", 3, 4, &t3[0]}, {"ScannerReadaheadTable", 4, 4, &t4[0]}, {"ScannerReadaheadTable", 5, 4, &t5[0]}, {"ScannerReadaheadTable", 6, 5, &t6[0]}, {"ScannerReadaheadTable", 7, 3, &t7[0]}, {"ScannerReadaheadTable", 8, 4, &t8[0]}, {"ScannerReadaheadTable", 9, 6, &t9[0]}, {"ScannerReadaheadTable", 10, 4, &t10[0]}, {"ScannerReadaheadTable", 11, 2, &t11[0]}, {"ScannerReadaheadTable", 12, 4, &t12[0]}, {"ScannerReadaheadTable", 13, 4, &t13[0]}, {"ScannerReadaheadTable", 14, 4, &t14[0]}, {"ScannerReadaheadTable", 15, 4, &t15[0]}, {"ScannerReadaheadTable", 16, 4, &t16[0]}, {"ScannerReadaheadTable", 17, 4, &t17[0]}, {"ScannerReadaheadTable", 18, 4, &t18[0]}, {"ScannerReadaheadTable", 19, 4, &t19[0]}}; //Define VARIABLES to refer to semantic table PARAMETERs. //FORMAT {string0, string1, ...} const char **p20 = new const char * [1] {"-|"}; const char **p21 = new const char * [1] {"And"}; const char **p22 = new const char * [1] {"OpenRound"}; const char **p23 = new const char * [1] {"CloseRound"}; const char **p24 = new const char * [1] {"Star"}; const char **p25 = new const char * [1] {"Plus"}; const char **p26 = new const char * [1] {"Minus"}; const char **p27 = new const char * [1] {"Dot"}; const char **p28 = new const char * [1] {"walkInteger:"}; const char **p29 = new const char * [1] {"Equals"}; const char **p30 = new const char * [1] {"QuestionMark"}; const char **p31 = new const char * [1] {"walkIdentifier:"}; const char **p32 = new const char * [1] {"OpenSquare"}; const char **p33 = new const char * [1] {"VerticalBar"}; const char **p34 = new const char * [1] {"CloseSquare"}; const char **p35 = new const char * [1] {"OpenCurly"}; const char **p36 = new const char * [1] {"CloseCurly"}; const char **p37 = new const char * [1] {"RightArrow"}; const char **p38 = new const char * [1] {"DotDot"}; const char **p39 = new const char * [1] {"FatRightArrow"}; const char **p40 = new const char * [1] {"walkSymbol:"}; const char **p41 = new const char * [1] {"missing end quote for single quoted string"}; const char **p42 = new const char * [1] {"walkString:"}; const char **p43 = new const char * [1] {"// is a comment, / alone is not valid"}; const char **p44 = new const char * [1] {"missing end quote for double quoted string"}; const char **p45 = new const char * [1] {"walkCharacter:"}; const char **p46 = new const char * [1] {"missing end quote for double quoted string"}; const char **p47 = new const char * [1] {"missing end quote for single quoted string"}; //Define an array of semantic tables. //FORMAT SemanticTable {const char *name; long stateNumber; const char *action; long size; const char **parameters; long gotoTableNumber;} RawSemanticTable *semanticTables = new RawSemanticTable [28] { {"SemanticTable", 20, "buildToken", 1, p20, 0}, {"SemanticTable", 21, "buildToken", 1, p21, 0}, {"SemanticTable", 22, "buildToken", 1, p22, 0}, {"SemanticTable", 23, "buildToken", 1, p23, 0}, {"SemanticTable", 24, "buildToken", 1, p24, 0}, {"SemanticTable", 25, "buildToken", 1, p25, 0}, {"SemanticTable", 26, "buildToken", 1, p26, 0}, {"SemanticTable", 27, "buildToken", 1, p27, 0}, {"SemanticTable", 28, "buildToken", 1, p28, 0}, {"SemanticTable", 29, "buildToken", 1, p29, 0}, {"SemanticTable", 30, "buildToken", 1, p30, 0}, {"SemanticTable", 31, "buildToken", 1, p31, 0}, {"SemanticTable", 32, "buildToken", 1, p32, 0}, {"SemanticTable", 33, "buildToken", 1, p33, 0}, {"SemanticTable", 34, "buildToken", 1, p34, 0}, {"SemanticTable", 35, "buildToken", 1, p35, 0}, {"SemanticTable", 36, "buildToken", 1, p36, 0}, {"SemanticTable", 37, "buildToken", 1, p37, 0}, {"SemanticTable", 38, "buildToken", 1, p38, 0}, {"SemanticTable", 39, "buildToken", 1, p39, 0}, {"SemanticTable", 40, "buildToken", 1, p40, 0}, {"SemanticTable", 41, "syntaxError", 1, p41, 42}, {"SemanticTable", 42, "buildToken", 1, p42, 0}, {"SemanticTable", 43, "syntaxError", 1, p43, 0}, {"SemanticTable", 44, "syntaxError", 1, p44, 42}, {"SemanticTable", 45, "buildToken", 1, p45, 0}, {"SemanticTable", 46, "syntaxError", 1, p46, 40}, {"SemanticTable", 47, "syntaxError", 1, p47, 40} }; ScannerTables *scannerTables = new ScannerTables; ScannerTables onStackScannerTables = { 20, scannerReadaheadTables, 28, semanticTables }; copy (scannerTables, &onStackScannerTables); return scannerTables; } #undef copy void deleteScannerTables (ScannerTables *scannerTable) { for (long index = 0; index < scannerTable->scannerReadaheadTablesSize; index++) { RawScannerReadaheadTable &scannerReadaheadTable = scannerTable->scannerReadaheadTables [index]; for (long index2 = 0; index2 < scannerReadaheadTable.size; index2++) { delete [] scannerReadaheadTable.triples [index2].string; } delete [] scannerReadaheadTable.triples; } delete [] scannerTable->scannerReadaheadTables; for (long index = 0; index < scannerTable->semanticTablesSize; index++) { delete [] scannerTable->semanticTables [index].parameters; } delete [] scannerTable->semanticTables; } //JAVA ------------------------------------> //NOTE: The following declarations should probably be moved manually to a more global location for access elsewhere... //NOTE: Strings are not allocated with new since they exist globally as part of the compiled code. struct RawScannerReadaheadTriple {const char *string; const char *attributes; long gotoTableNumber;}; //Note: string == NULL is equivalent to "{256}" (end of file). struct RawScannerReadaheadTable {const char *name; long stateNumber; long size; RawScannerReadaheadTriple *triples;}; struct RawSemanticTable {const char *name; long stateNumber; const char *action; long size; const char **parameters; long gotoTableNumber;}; struct ScannerTables { long scannerReadaheadTablesSize; RawScannerReadaheadTable *scannerReadaheadTables; long semanticTablesSize; RawSemanticTable *semanticTables; }; #define copy(a,b) CopyMemory (a, b, sizeof (b)) ScannerTables *scannerTables () { //Define VARIABLES to refer to scanner readahead table TRIPLEs. //FORMAT: RawScannerReadaheadTriple {const char *string; const char *attributes; long gotoTableNumber;} //Note: string == NULL is equivalent to "{256}" (end of file). RawScannerReadaheadTriple *t0 = new RawScannerReadaheadTriple [24] {{"]", "RK", 34}, {"/", "R", 9}, {"{", "RK", 35}, {"}", "RK", 36}, {"\"", "R", 10}, {"$", "R", 11}, {NULL, "L", 20}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 5}, {"[", "RK", 32}, {"(", "RK", 22}, {")", "RK", 23}, {"*", "RK", 24}, {"+", "RK", 25}, {"-", "RK", 1}, {"&", "RK", 21}, {".", "RK", 2}, {"\011\012\014\015", "R", 6}, {" ", "R", 6}, {"0123456789", "RK", 3}, {"=", "RK", 4}, {"?", "RK", 30}, {"#", "R", 7}, {"|", "RK", 33}, {"'", "R", 8}}; RawScannerReadaheadTriple *t1 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 26}, {NULL, "L", 26}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<[]{}()^;#:.$'\" ", "L", 26}, {">", "RK", 37}}; RawScannerReadaheadTriple *t2 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 27}, {NULL, "L", 27}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:$'\" ", "L", 27}, {".", "RK", 38}}; RawScannerReadaheadTriple *t3 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 28}, {NULL, "L", 28}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_!,+-/\\*~=@%&?|<>[]{}()^;#:.$'\" ", "L", 28}, {"0123456789", "RK", 3}}; RawScannerReadaheadTriple *t4 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 29}, {NULL, "L", 29}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<[]{}()^;#:.$'\" ", "L", 29}, {">", "RK", 39}}; RawScannerReadaheadTriple *t5 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 31}, {NULL, "L", 31}, {"!,+-/\\*~=@%&?|<>[]{}()^;#.$'\" ", "L", 31}, {"0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 5}}; RawScannerReadaheadTriple *t6 = new RawScannerReadaheadTriple [5] {{"\140\223\224", "L", 0}, {NULL, "L", 0}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$'\"", "L", 0}, {"\011\012\014\015", "R", 6}, {" ", "R", 6}}; RawScannerReadaheadTriple *t7 = new RawScannerReadaheadTriple [3] {{"\"", "R", 13}, {"'", "R", 14}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 12}}; RawScannerReadaheadTriple *t8 = new RawScannerReadaheadTriple [4] {{NULL, "LK", 41}, {"'", "R", 15}, {"\011\012\014\015\140\223\224", "RK", 8}, {" !\"#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 8}}; RawScannerReadaheadTriple *t9 = new RawScannerReadaheadTriple [6] {{"\011\012\014\015", "L", 43}, {" ", "L", 43}, {"\140\223\224", "LK", 43}, {NULL, "LK", 43}, {"=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_\\abcdefghijklmnopqrstuvwxyz{|}~!\"#$%&'()*+,-.0123456789:;<", "LK", 43}, {"/", "R", 16}}; RawScannerReadaheadTriple *t10 = new RawScannerReadaheadTriple [4] {{NULL, "LK", 44}, {"\"", "R", 17}, {"\011\012\014\015\140\223\224", "RK", 10}, {" !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 10}}; RawScannerReadaheadTriple *t11 = new RawScannerReadaheadTriple [2] {{"\011\012\014\015\140\223\224", "RK", 45}, {" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 45}}; RawScannerReadaheadTriple *t12 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 40}, {NULL, "L", 40}, {"!,+-/\\*~=@%&?|<>[]{}()^;#.$'\" ", "L", 40}, {"0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 12}}; RawScannerReadaheadTriple *t13 = new RawScannerReadaheadTriple [4] {{NULL, "LK", 46}, {"\"", "R", 18}, {"\011\012\014\015\140\223\224", "RK", 13}, {" !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 13}}; RawScannerReadaheadTriple *t14 = new RawScannerReadaheadTriple [4] {{NULL, "LK", 47}, {"'", "R", 19}, {"\011\012\014\015\140\223\224", "RK", 14}, {" !\"#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 14}}; RawScannerReadaheadTriple *t15 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 42}, {NULL, "L", 42}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$\" ", "L", 42}, {"'", "RK", 8}}; RawScannerReadaheadTriple *t16 = new RawScannerReadaheadTriple [4] {{"\011\140\223\224", "R", 16}, {"=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~ !\"#$%&'()*+,-./0123456789:;<", "R", 16}, {NULL, "LK", 0}, {"\012\014\015", "R", 0}}; RawScannerReadaheadTriple *t17 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 42}, {NULL, "L", 42}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$' ", "L", 42}, {"\"", "RK", 10}}; RawScannerReadaheadTriple *t18 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 40}, {NULL, "L", 40}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$' ", "L", 40}, {"\"", "RK", 13}}; RawScannerReadaheadTriple *t19 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 40}, {NULL, "L", 40}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$\" ", "L", 40}, {"'", "RK", 14}}; //Define an array of scanner readahead tables. //FORMAT: RawScannerReadaheadTable {const char *name; long stateNumber; long size; RawScannerReadaheadTriple *triples;} RawScannerReadaheadTable *scannerReadaheadTables = new RawScannerReadaheadTable [20] { {"ScannerReadaheadTable", 0, 24, &t0[0]}, {"ScannerReadaheadTable", 1, 4, &t1[0]}, {"ScannerReadaheadTable", 2, 4, &t2[0]}, {"ScannerReadaheadTable", 3, 4, &t3[0]}, {"ScannerReadaheadTable", 4, 4, &t4[0]}, {"ScannerReadaheadTable", 5, 4, &t5[0]}, {"ScannerReadaheadTable", 6, 5, &t6[0]}, {"ScannerReadaheadTable", 7, 3, &t7[0]}, {"ScannerReadaheadTable", 8, 4, &t8[0]}, {"ScannerReadaheadTable", 9, 6, &t9[0]}, {"ScannerReadaheadTable", 10, 4, &t10[0]}, {"ScannerReadaheadTable", 11, 2, &t11[0]}, {"ScannerReadaheadTable", 12, 4, &t12[0]}, {"ScannerReadaheadTable", 13, 4, &t13[0]}, {"ScannerReadaheadTable", 14, 4, &t14[0]}, {"ScannerReadaheadTable", 15, 4, &t15[0]}, {"ScannerReadaheadTable", 16, 4, &t16[0]}, {"ScannerReadaheadTable", 17, 4, &t17[0]}, {"ScannerReadaheadTable", 18, 4, &t18[0]}, {"ScannerReadaheadTable", 19, 4, &t19[0]}}; //Define VARIABLES to refer to semantic table PARAMETERs. //FORMAT {string0, string1, ...} const char **p20 = new const char * [1] {"-|"}; const char **p21 = new const char * [1] {"And"}; const char **p22 = new const char * [1] {"OpenRound"}; const char **p23 = new const char * [1] {"CloseRound"}; const char **p24 = new const char * [1] {"Star"}; const char **p25 = new const char * [1] {"Plus"}; const char **p26 = new const char * [1] {"Minus"}; const char **p27 = new const char * [1] {"Dot"}; const char **p28 = new const char * [1] {"walkInteger:"}; const char **p29 = new const char * [1] {"Equals"}; const char **p30 = new const char * [1] {"QuestionMark"}; const char **p31 = new const char * [1] {"walkIdentifier:"}; const char **p32 = new const char * [1] {"OpenSquare"}; const char **p33 = new const char * [1] {"VerticalBar"}; const char **p34 = new const char * [1] {"CloseSquare"}; const char **p35 = new const char * [1] {"OpenCurly"}; const char **p36 = new const char * [1] {"CloseCurly"}; const char **p37 = new const char * [1] {"RightArrow"}; const char **p38 = new const char * [1] {"DotDot"}; const char **p39 = new const char * [1] {"FatRightArrow"}; const char **p40 = new const char * [1] {"walkSymbol:"}; const char **p41 = new const char * [1] {"missing end quote for single quoted string"}; const char **p42 = new const char * [1] {"walkString:"}; const char **p43 = new const char * [1] {"// is a comment, / alone is not valid"}; const char **p44 = new const char * [1] {"missing end quote for double quoted string"}; const char **p45 = new const char * [1] {"walkCharacter:"}; const char **p46 = new const char * [1] {"missing end quote for double quoted string"}; const char **p47 = new const char * [1] {"missing end quote for single quoted string"}; //Define an array of semantic tables. //FORMAT SemanticTable {const char *name; long stateNumber; const char *action; long size; const char **parameters; long gotoTableNumber;} RawSemanticTable *semanticTables = new RawSemanticTable [28] { {"SemanticTable", 20, "buildToken", 1, p20, 0}, {"SemanticTable", 21, "buildToken", 1, p21, 0}, {"SemanticTable", 22, "buildToken", 1, p22, 0}, {"SemanticTable", 23, "buildToken", 1, p23, 0}, {"SemanticTable", 24, "buildToken", 1, p24, 0}, {"SemanticTable", 25, "buildToken", 1, p25, 0}, {"SemanticTable", 26, "buildToken", 1, p26, 0}, {"SemanticTable", 27, "buildToken", 1, p27, 0}, {"SemanticTable", 28, "buildToken", 1, p28, 0}, {"SemanticTable", 29, "buildToken", 1, p29, 0}, {"SemanticTable", 30, "buildToken", 1, p30, 0}, {"SemanticTable", 31, "buildToken", 1, p31, 0}, {"SemanticTable", 32, "buildToken", 1, p32, 0}, {"SemanticTable", 33, "buildToken", 1, p33, 0}, {"SemanticTable", 34, "buildToken", 1, p34, 0}, {"SemanticTable", 35, "buildToken", 1, p35, 0}, {"SemanticTable", 36, "buildToken", 1, p36, 0}, {"SemanticTable", 37, "buildToken", 1, p37, 0}, {"SemanticTable", 38, "buildToken", 1, p38, 0}, {"SemanticTable", 39, "buildToken", 1, p39, 0}, {"SemanticTable", 40, "buildToken", 1, p40, 0}, {"SemanticTable", 41, "syntaxError", 1, p41, 42}, {"SemanticTable", 42, "buildToken", 1, p42, 0}, {"SemanticTable", 43, "syntaxError", 1, p43, 0}, {"SemanticTable", 44, "syntaxError", 1, p44, 42}, {"SemanticTable", 45, "buildToken", 1, p45, 0}, {"SemanticTable", 46, "syntaxError", 1, p46, 40}, {"SemanticTable", 47, "syntaxError", 1, p47, 40} }; ScannerTables *scannerTables = new ScannerTables; ScannerTables onStackScannerTables = { 20, scannerReadaheadTables, 28, semanticTables }; copy (scannerTables, &onStackScannerTables); return scannerTables; } #undef copy void deleteScannerTables (ScannerTables *scannerTable) { for (long index = 0; index < scannerTable->scannerReadaheadTablesSize; index++) { RawScannerReadaheadTable &scannerReadaheadTable = scannerTable->scannerReadaheadTables [index]; for (long index2 = 0; index2 < scannerReadaheadTable.size; index2++) { delete [] scannerReadaheadTable.triples [index2].string; } delete [] scannerReadaheadTable.triples; } delete [] scannerTable->scannerReadaheadTables; for (long index = 0; index < scannerTable->semanticTablesSize; index++) { delete [] scannerTable->semanticTables [index].parameters; } delete [] scannerTable->semanticTables; } //JAVA: LIST VERSION --------------> static List rawScannerTables () {return asList ( asList ("ScannerReadaheadTable", 0, asList ("]", "RK", 34), asList ("/", "R", 9), asList ("{", "RK", 35), asList ("}", "RK", 36), asList ("\"", "R", 10), asList ("$", "R", 11), asList (("256") "L" 20), asList ("ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 5), asList ("[", "RK", 32), asList ("(", "RK", 22), asList (")", "RK", 23), asList ("*", "RK", 24), asList ("+", "RK", 25), asList ("-", "RK", 1), asList ("&", "RK", 21), asList (".", "RK", 2), asList (("9 10 12 13") "R" 6), asList (" ", "R", 6), asList ("0123456789", "RK", 3), asList ("=", "RK", 4), asList ("?", "RK", 30), asList ("#", "R", 7), asList ("|", "RK", 33), asList ("'", "R", 8)), asList ("ScannerReadaheadTable", 1, asList (("9 10 12 13 96 147 148 256") "L" 26), asList ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<[]{}()^;#:.$'\" ", "L", 26), asList (">", "RK", 37)), asList ("ScannerReadaheadTable", 2, asList (("9 10 12 13 96 147 148 256") "L" 27), asList ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:$'\" ", "L", 27), asList (".", "RK", 38)), asList ("ScannerReadaheadTable", 3, asList (("9 10 12 13 96 147 148 256") "L" 28), asList ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_!,+-/\\*~=@%&?|<>[]{}()^;#:.$'\" ", "L", 28), asList ("0123456789", "RK", 3)), asList ("ScannerReadaheadTable", 4, asList (("9 10 12 13 96 147 148 256") "L" 29), asList ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<[]{}()^;#:.$'\" ", "L", 29), asList (">", "RK", 39)), asList ("ScannerReadaheadTable", 5, asList (("9 10 12 13 96 147 148 256") "L" 31), asList ("!,+-/\\*~=@%&?|<>[]{}()^;#.$'\" ", "L", 31), asList ("0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 5)), asList ("ScannerReadaheadTable", 6, asList (("96 147 148 256") "L" 0), asList ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$'\"", "L", 0), asList (("9 10 12 13") "R" 6), asList (" ", "R", 6)), asList ("ScannerReadaheadTable", 7, asList ("\"", "R", 13), asList ("'", "R", 14), asList ("ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 12)), asList ("ScannerReadaheadTable", 8, asList (("256") "LK" 41), asList ("'", "R", 15), asList (("9 10 12 13 96 147 148") "RK" 8), asList (" !\"#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 8)), asList ("ScannerReadaheadTable", 9, asList (("9 10 12 13") "L" 43), asList (" ", "L", 43), asList (("96 147 148 256") "LK" 43), asList ("=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_\\abcdefghijklmnopqrstuvwxyz{|}~!\"#$%&'()*+,-.0123456789:;<", "LK", 43), asList ("/", "R", 16)), asList ("ScannerReadaheadTable", 10, asList (("256") "LK" 44), asList ("\"", "R", 17), asList (("9 10 12 13 96 147 148") "RK" 10), asList (" !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 10)), asList ("ScannerReadaheadTable", 11, asList (("9 10 12 13 96 147 148") "RK" 45), asList (" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 45)), asList ("ScannerReadaheadTable", 12, asList (("9 10 12 13 96 147 148 256") "L" 40), asList ("!,+-/\\*~=@%&?|<>[]{}()^;#.$'\" ", "L", 40), asList ("0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 12)), asList ("ScannerReadaheadTable", 13, asList (("256") "LK" 46), asList ("\"", "R", 18), asList (("9 10 12 13 96 147 148") "RK" 13), asList (" !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 13)), asList ("ScannerReadaheadTable", 14, asList (("256") "LK" 47), asList ("'", "R", 19), asList (("9 10 12 13 96 147 148") "RK" 14), asList (" !\"#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 14)), asList ("ScannerReadaheadTable", 15, asList (("9 10 12 13 96 147 148 256") "L" 42), asList ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$\" ", "L", 42), asList ("'", "RK", 8)), asList ("ScannerReadaheadTable", 16, asList (("9 96 147 148") "R" 16), asList ("=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~ !\"#$%&'()*+,-./0123456789:;<", "R", 16), asList (("256") "LK" 0), asList (("10 12 13") "R" 0)), asList ("ScannerReadaheadTable", 17, asList (("9 10 12 13 96 147 148 256") "L" 42), asList ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$' ", "L", 42), asList ("\"", "RK", 10)), asList ("ScannerReadaheadTable", 18, asList (("9 10 12 13 96 147 148 256") "L" 40), asList ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$' ", "L", 40), asList ("\"", "RK", 13)), asList ("ScannerReadaheadTable", 19, asList (("9 10 12 13 96 147 148 256") "L" 40), asList ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$\" ", "L", 40), asList ("'", "RK", 14)), asList ("SemanticTable", 20, buildToken, asList ("-|"), 0), asList ("SemanticTable", 21, buildToken, asList ("And"), 0), asList ("SemanticTable", 22, buildToken, asList ("OpenRound"), 0), asList ("SemanticTable", 23, buildToken, asList ("CloseRound"), 0), asList ("SemanticTable", 24, buildToken, asList ("Star"), 0), asList ("SemanticTable", 25, buildToken, asList ("Plus"), 0), asList ("SemanticTable", 26, buildToken, asList ("Minus"), 0), asList ("SemanticTable", 27, buildToken, asList ("Dot"), 0), asList ("SemanticTable", 28, buildToken, asList ("walkInteger:"), 0), asList ("SemanticTable", 29, buildToken, asList ("Equals"), 0), asList ("SemanticTable", 30, buildToken, asList ("QuestionMark"), 0), asList ("SemanticTable", 31, buildToken, asList ("walkIdentifier:"), 0), asList ("SemanticTable", 32, buildToken, asList ("OpenSquare"), 0), asList ("SemanticTable", 33, buildToken, asList ("VerticalBar"), 0), asList ("SemanticTable", 34, buildToken, asList ("CloseSquare"), 0), asList ("SemanticTable", 35, buildToken, asList ("OpenCurly"), 0), asList ("SemanticTable", 36, buildToken, asList ("CloseCurly"), 0), asList ("SemanticTable", 37, buildToken, asList ("RightArrow"), 0), asList ("SemanticTable", 38, buildToken, asList ("DotDot"), 0), asList ("SemanticTable", 39, buildToken, asList ("FatRightArrow"), 0), asList ("SemanticTable", 40, buildToken, asList ("walkSymbol:"), 0), asList ("SemanticTable", 41, syntaxError, asList ("missing end quote for single quoted string"), 42), asList ("SemanticTable", 42, buildToken, asList ("walkString:"), 0), asList ("SemanticTable", 43, syntaxError, asList ("// is a comment, / alone is not valid"), 0), asList ("SemanticTable", 44, syntaxError, asList ("missing end quote for double quoted string"), 42), asList ("SemanticTable", 45, buildToken, asList ("walkCharacter:"), 0), asList ("SemanticTable", 46, syntaxError, asList ("missing end quote for double quoted string"), 40), asList ("SemanticTable", 47, syntaxError, asList ("missing end quote for single quoted string"), 40));}