//SMALLTALK -------------------------> #( (ScannerReadaheadTable 1 ('''' 'R' 9) (']' 'RK' 36) ('/' 'R' 10) ('{' 'RK' 37) ('}' 'RK' 38) ('"' 'R' 11) ('$' 'R' 12) ((256) 'L' 21) ('?' 'RK' 32) ('ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz' 'RK' 6) ('(' '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' 30) ('=' 'RK' 5) ('[' 'RK' 34) ('#' 'R' 8) ('|' 'RK' 35)) (ScannerReadaheadTable 2 ((9 10 12 13 96 147 148 256) 'L' 27) ('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\*~=@%&?|<[]{}()^;#:.$''" ' 'L' 27) ('>' 'RK' 39)) (ScannerReadaheadTable 3 ((9 10 12 13 96 147 148 256) 'L' 28) ('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\*~=@%&?|<>[]{}()^;#:$''" ' 'L' 28) ('.' 'RK' 40)) (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' 31) ('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\*~=@%&?|<[]{}()^;#:.$''" ' 'L' 31) ('>' 'RK' 41)) (ScannerReadaheadTable 6 ((9 10 12 13 96 147 148 256) 'L' 33) ('!,+-/\*~=@%&?|<>[]{}()^;#.$''" ' 'L' 33) ('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' 43) ('''' 'R' 16) ((9 10 12 13 96 147 148) 'RK' 9) (' !"#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_abcdefghijklmnopqrstuvwxyz{|}~' 'RK' 9)) (ScannerReadaheadTable 10 ((9 10 12 13) 'L' 45) (' ' 'L' 45) ((96 147 148 256) 'LK' 45) ('=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_\abcdefghijklmnopqrstuvwxyz{|}~!"#$%&''()*+,-.0123456789:;<' 'LK' 45) ('/' 'R' 17)) (ScannerReadaheadTable 11 ((256) 'LK' 46) ('"' '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' 47) (' !"#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_abcdefghijklmnopqrstuvwxyz{|}~' 'RK' 47)) (ScannerReadaheadTable 13 ((9 10 12 13 96 147 148 256) 'L' 42) ('!,+-/\*~=@%&?|<>[]{}()^;#.$''" ' 'L' 42) ('0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz' 'RK' 13)) (ScannerReadaheadTable 14 ((256) 'LK' 48) ('"' 'R' 19) ((9 10 12 13 96 147 148) 'RK' 14) (' !#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_abcdefghijklmnopqrstuvwxyz{|}~' 'RK' 14)) (ScannerReadaheadTable 15 ((256) 'LK' 49) ('''' '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' 44) ('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\*~=@%&?|<>[]{}()^;#:.$" ' 'L' 44) ('''' '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' 44) ('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\*~=@%&?|<>[]{}()^;#:.$'' ' 'L' 44) ('"' 'RK' 11)) (ScannerReadaheadTable 19 ((9 10 12 13 96 147 148 256) 'L' 42) ('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\*~=@%&?|<>[]{}()^;#:.$'' ' 'L' 42) ('"' 'RK' 14)) (ScannerReadaheadTable 20 ((9 10 12 13 96 147 148 256) 'L' 42) ('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\*~=@%&?|<>[]{}()^;#:.$" ' 'L' 42) ('''' 'RK' 15)) (SemanticTable 21 buildToken: EndOfFile 1) (SemanticTable 22 buildToken: '&' 1) (SemanticTable 23 buildToken: '(' 1) (SemanticTable 24 buildToken: ')' 1) (SemanticTable 25 buildToken: '*' 1) (SemanticTable 26 buildToken: '+' 1) (SemanticTable 27 buildToken: '-' 1) (SemanticTable 28 buildToken: '.' 1) (SemanticTable 29 buildToken: walkInteger: 1) (SemanticTable 30 buildToken: ';' 1) (SemanticTable 31 buildToken: '=' 1) (SemanticTable 32 buildToken: '?' 1) (SemanticTable 33 buildToken: walkIdentifier: 1) (SemanticTable 34 buildToken: '[' 1) (SemanticTable 35 buildToken: '|' 1) (SemanticTable 36 buildToken: ']' 1) (SemanticTable 37 buildToken: '{' 1) (SemanticTable 38 buildToken: '}' 1) (SemanticTable 39 buildToken: '->' 1) (SemanticTable 40 buildToken: '..' 1) (SemanticTable 41 buildToken: '=>' 1) (SemanticTable 42 buildToken: walkSymbol: 1) (SemanticTable 43 syntaxError: 'missing end quote for single quoted string' 44) (SemanticTable 44 buildToken: walkString: 1) (SemanticTable 45 syntaxError: '// is a comment, / alone is not valid' 1) (SemanticTable 46 syntaxError: 'missing end quote for double quoted string' 44) (SemanticTable 47 buildToken: walkCharacter: 1) (SemanticTable 48 syntaxError: 'missing end quote for double quoted string' 42) (SemanticTable 49 syntaxError: 'missing end quote for single quoted string' 42)) //RUBY -----------------------------------> [ [:ScannerReadaheadTable, 1, ['\'', 'R', 9], [']', 'RK', 36], ['/', 'R', 10], ['{', 'RK', 37], ['}', 'RK', 38], ['"', 'R', 11], ['$', 'R', 12], [[256], 'L', 21], ['?', 'RK', 32], ['ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz', 'RK', 6], ['(', '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', 30], ['=', 'RK', 5], ['[', 'RK', 34], ['#', 'R', 8], ['|', 'RK', 35]], [:ScannerReadaheadTable, 2, [[9, 10, 12, 13, 96, 147, 148, 256], 'L', 27], ['ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<[]{}()^;#:.$\'" ', 'L', 27], ['>', 'RK', 39]], [:ScannerReadaheadTable, 3, [[9, 10, 12, 13, 96, 147, 148, 256], 'L', 28], ['ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:$\'" ', 'L', 28], ['.', 'RK', 40]], [: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', 31], ['ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<[]{}()^;#:.$\'" ', 'L', 31], ['>', 'RK', 41]], [:ScannerReadaheadTable, 6, [[9, 10, 12, 13, 96, 147, 148, 256], 'L', 33], ['!,+-/\\*~=@%&?|<>[]{}()^;#.$\'" ', 'L', 33], ['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', 43], ['\'', 'R', 16], [[9, 10, 12, 13, 96, 147, 148], 'RK', 9], [' !"#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~', 'RK', 9]], [:ScannerReadaheadTable, 10, [[9, 10, 12, 13], 'L', 45], [' ', 'L', 45], [[96, 147, 148, 256], 'LK', 45], ['=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_\\abcdefghijklmnopqrstuvwxyz{|}~!"#$%&\'()*+,-.0123456789:;<', 'LK', 45], ['/', 'R', 17]], [:ScannerReadaheadTable, 11, [[256], 'LK', 46], ['"', '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', 47], [' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~', 'RK', 47]], [:ScannerReadaheadTable, 13, [[9, 10, 12, 13, 96, 147, 148, 256], 'L', 42], ['!,+-/\\*~=@%&?|<>[]{}()^;#.$\'" ', 'L', 42], ['0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz', 'RK', 13]], [:ScannerReadaheadTable, 14, [[256], 'LK', 48], ['"', 'R', 19], [[9, 10, 12, 13, 96, 147, 148], 'RK', 14], [' !#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~', 'RK', 14]], [:ScannerReadaheadTable, 15, [[256], 'LK', 49], ['\'', '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', 44], ['ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$" ', 'L', 44], ['\'', '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', 44], ['ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$\' ', 'L', 44], ['"', 'RK', 11]], [:ScannerReadaheadTable, 19, [[9, 10, 12, 13, 96, 147, 148, 256], 'L', 42], ['ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$\' ', 'L', 42], ['"', 'RK', 14]], [:ScannerReadaheadTable, 20, [[9, 10, 12, 13, 96, 147, 148, 256], 'L', 42], ['ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$" ', 'L', 42], ['\'', 'RK', 15]], [:SemanticTable, 21, :buildToken, :EndOfFile, 1], [:SemanticTable, 22, :buildToken, '&', 1], [:SemanticTable, 23, :buildToken, '(', 1], [:SemanticTable, 24, :buildToken, ')', 1], [:SemanticTable, 25, :buildToken, '*', 1], [:SemanticTable, 26, :buildToken, '+', 1], [:SemanticTable, 27, :buildToken, '-', 1], [:SemanticTable, 28, :buildToken, '.', 1], [:SemanticTable, 29, :buildToken, :walkInteger, 1], [:SemanticTable, 30, :buildToken, ';', 1], [:SemanticTable, 31, :buildToken, '=', 1], [:SemanticTable, 32, :buildToken, '?', 1], [:SemanticTable, 33, :buildToken, :walkIdentifier, 1], [:SemanticTable, 34, :buildToken, '[', 1], [:SemanticTable, 35, :buildToken, '|', 1], [:SemanticTable, 36, :buildToken, ']', 1], [:SemanticTable, 37, :buildToken, '{', 1], [:SemanticTable, 38, :buildToken, '}', 1], [:SemanticTable, 39, :buildToken, '->', 1], [:SemanticTable, 40, :buildToken, '..', 1], [:SemanticTable, 41, :buildToken, '=>', 1], [:SemanticTable, 42, :buildToken, :walkSymbol, 1], [:SemanticTable, 43, :syntaxError, 'missing end quote for single quoted string', 44], [:SemanticTable, 44, :buildToken, :walkString, 1], [:SemanticTable, 45, :syntaxError, '// is a comment, / alone is not valid', 1], [:SemanticTable, 46, :syntaxError, 'missing end quote for double quoted string', 44], [:SemanticTable, 47, :buildToken, :walkCharacter, 1], [:SemanticTable, 48, :syntaxError, 'missing end quote for double quoted string', 42], [:SemanticTable, 49, :syntaxError, 'missing end quote for single quoted string', 42]] //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, 25, new RawScannerReadaheadTriple* [25] { new RawScannerReadaheadTriple {"'", "R", 8}, new RawScannerReadaheadTriple {"]", "RK", 35}, new RawScannerReadaheadTriple {"/", "R", 9}, new RawScannerReadaheadTriple {"{", "RK", 36}, new RawScannerReadaheadTriple {"}", "RK", 37}, new RawScannerReadaheadTriple {"\"", "R", 10}, new RawScannerReadaheadTriple {"$", "R", 11}, new RawScannerReadaheadTriple {NULL, "L", 20}, new RawScannerReadaheadTriple {"?", "RK", 31}, new RawScannerReadaheadTriple {"ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 5}, 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", 29}, new RawScannerReadaheadTriple {"=", "RK", 4}, new RawScannerReadaheadTriple {"[", "RK", 33}, new RawScannerReadaheadTriple {"#", "R", 7}, new RawScannerReadaheadTriple {"|", "RK", 34}}}, 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", 38}}}, 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", 39}}}, 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", 30}, new RawScannerReadaheadTriple {NULL, "L", 30}, new RawScannerReadaheadTriple {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<[]{}()^;#:.$'\" ", "L", 30}, new RawScannerReadaheadTriple {">", "RK", 40}}}, new RawScannerReadaheadTable {"ScannerReadaheadTable", 5, 4, new RawScannerReadaheadTriple* [4] { new RawScannerReadaheadTriple {"\011\012\014\015\140\223\224", "L", 32}, new RawScannerReadaheadTriple {NULL, "L", 32}, new RawScannerReadaheadTriple {"!,+-/\\*~=@%&?|<>[]{}()^;#.$'\" ", "L", 32}, 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", 42}, 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", 44}, new RawScannerReadaheadTriple {" ", "L", 44}, new RawScannerReadaheadTriple {"\140\223\224", "LK", 44}, new RawScannerReadaheadTriple {NULL, "LK", 44}, new RawScannerReadaheadTriple {"=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_\\abcdefghijklmnopqrstuvwxyz{|}~!\"#$%&'()*+,-.0123456789:;<", "LK", 44}, new RawScannerReadaheadTriple {"/", "R", 16}}}, new RawScannerReadaheadTable {"ScannerReadaheadTable", 10, 4, new RawScannerReadaheadTriple* [4] { new RawScannerReadaheadTriple {NULL, "LK", 45}, 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", 46}, new RawScannerReadaheadTriple {" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 46}}}, new RawScannerReadaheadTable {"ScannerReadaheadTable", 12, 4, new RawScannerReadaheadTriple* [4] { new RawScannerReadaheadTriple {"\011\012\014\015\140\223\224", "L", 41}, new RawScannerReadaheadTriple {NULL, "L", 41}, new RawScannerReadaheadTriple {"!,+-/\\*~=@%&?|<>[]{}()^;#.$'\" ", "L", 41}, new RawScannerReadaheadTriple {"0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 12}}}, new RawScannerReadaheadTable {"ScannerReadaheadTable", 13, 4, new RawScannerReadaheadTriple* [4] { new RawScannerReadaheadTriple {NULL, "LK", 47}, 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", 48}, 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", 43}, new RawScannerReadaheadTriple {NULL, "L", 43}, new RawScannerReadaheadTriple {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$\" ", "L", 43}, 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", 43}, new RawScannerReadaheadTriple {NULL, "L", 43}, new RawScannerReadaheadTriple {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$' ", "L", 43}, new RawScannerReadaheadTriple {"\"", "RK", 10}}}, new RawScannerReadaheadTable {"ScannerReadaheadTable", 18, 4, new RawScannerReadaheadTriple* [4] { new RawScannerReadaheadTriple {"\011\012\014\015\140\223\224", "L", 41}, new RawScannerReadaheadTriple {NULL, "L", 41}, new RawScannerReadaheadTriple {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$' ", "L", 41}, new RawScannerReadaheadTriple {"\"", "RK", 13}}}, new RawScannerReadaheadTable {"ScannerReadaheadTable", 19, 4, new RawScannerReadaheadTriple* [4] { new RawScannerReadaheadTriple {"\011\012\014\015\140\223\224", "L", 41}, new RawScannerReadaheadTriple {NULL, "L", 41}, new RawScannerReadaheadTriple {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$\" ", "L", 41}, new RawScannerReadaheadTriple {"'", "RK", 14}}}}, 29, new RawSemanticTable* [29] { new RawSemanticTable {"SemanticTable", 20, "buildToken", 1, new const char * [1] {"EndOfFile"}, 0}, new RawSemanticTable {"SemanticTable", 21, "buildToken", 1, new const char * [1] {"&"}, 0}, new RawSemanticTable {"SemanticTable", 22, "buildToken", 1, new const char * [1] {"("}, 0}, new RawSemanticTable {"SemanticTable", 23, "buildToken", 1, new const char * [1] {")"}, 0}, new RawSemanticTable {"SemanticTable", 24, "buildToken", 1, new const char * [1] {"*"}, 0}, new RawSemanticTable {"SemanticTable", 25, "buildToken", 1, new const char * [1] {"+"}, 0}, new RawSemanticTable {"SemanticTable", 26, "buildToken", 1, new const char * [1] {"-"}, 0}, new RawSemanticTable {"SemanticTable", 27, "buildToken", 1, new const char * [1] {"."}, 0}, new RawSemanticTable {"SemanticTable", 28, "buildToken", 1, new const char * [1] {"walkInteger"}, 0}, new RawSemanticTable {"SemanticTable", 29, "buildToken", 1, new const char * [1] {";"}, 0}, new RawSemanticTable {"SemanticTable", 30, "buildToken", 1, new const char * [1] {"="}, 0}, new RawSemanticTable {"SemanticTable", 31, "buildToken", 1, new const char * [1] {"?"}, 0}, new RawSemanticTable {"SemanticTable", 32, "buildToken", 1, new const char * [1] {"walkIdentifier"}, 0}, new RawSemanticTable {"SemanticTable", 33, "buildToken", 1, new const char * [1] {"["}, 0}, new RawSemanticTable {"SemanticTable", 34, "buildToken", 1, new const char * [1] {"|"}, 0}, new RawSemanticTable {"SemanticTable", 35, "buildToken", 1, new const char * [1] {"]"}, 0}, new RawSemanticTable {"SemanticTable", 36, "buildToken", 1, new const char * [1] {"{"}, 0}, new RawSemanticTable {"SemanticTable", 37, "buildToken", 1, new const char * [1] {"}"}, 0}, new RawSemanticTable {"SemanticTable", 38, "buildToken", 1, new const char * [1] {"->"}, 0}, new RawSemanticTable {"SemanticTable", 39, "buildToken", 1, new const char * [1] {".."}, 0}, new RawSemanticTable {"SemanticTable", 40, "buildToken", 1, new const char * [1] {"=>"}, 0}, new RawSemanticTable {"SemanticTable", 41, "buildToken", 1, new const char * [1] {"walkSymbol"}, 0}, new RawSemanticTable {"SemanticTable", 42, "syntaxError", 1, new const char * [1] {"missing end quote for single quoted string"}, 43}, new RawSemanticTable {"SemanticTable", 43, "buildToken", 1, new const char * [1] {"walkString"}, 0}, new RawSemanticTable {"SemanticTable", 44, "syntaxError", 1, new const char * [1] {"// is a comment, / alone is not valid"}, 0}, new RawSemanticTable {"SemanticTable", 45, "syntaxError", 1, new const char * [1] {"missing end quote for double quoted string"}, 43}, new RawSemanticTable {"SemanticTable", 46, "buildToken", 1, new const char * [1] {"walkCharacter"}, 0}, new RawSemanticTable {"SemanticTable", 47, "syntaxError", 1, new const char * [1] {"missing end quote for double quoted string"}, 41}, new RawSemanticTable {"SemanticTable", 48, "syntaxError", 1, new const char * [1] {"missing end quote for single quoted string"}, 41}}}; }; 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 [25] {{"'", "R", 8}, {"]", "RK", 35}, {"/", "R", 9}, {"{", "RK", 36}, {"}", "RK", 37}, {"\"", "R", 10}, {"$", "R", 11}, {NULL, "L", 20}, {"?", "RK", 31}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 5}, {"(", "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", 29}, {"=", "RK", 4}, {"[", "RK", 33}, {"#", "R", 7}, {"|", "RK", 34}}; RawScannerReadaheadTriple *t1 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 26}, {NULL, "L", 26}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<[]{}()^;#:.$'\" ", "L", 26}, {">", "RK", 38}}; RawScannerReadaheadTriple *t2 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 27}, {NULL, "L", 27}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:$'\" ", "L", 27}, {".", "RK", 39}}; 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", 30}, {NULL, "L", 30}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<[]{}()^;#:.$'\" ", "L", 30}, {">", "RK", 40}}; RawScannerReadaheadTriple *t5 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 32}, {NULL, "L", 32}, {"!,+-/\\*~=@%&?|<>[]{}()^;#.$'\" ", "L", 32}, {"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", 42}, {"'", "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", 44}, {" ", "L", 44}, {"\140\223\224", "LK", 44}, {NULL, "LK", 44}, {"=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_\\abcdefghijklmnopqrstuvwxyz{|}~!\"#$%&'()*+,-.0123456789:;<", "LK", 44}, {"/", "R", 16}}; RawScannerReadaheadTriple *t10 = new RawScannerReadaheadTriple [4] {{NULL, "LK", 45}, {"\"", "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", 46}, {" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 46}}; RawScannerReadaheadTriple *t12 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 41}, {NULL, "L", 41}, {"!,+-/\\*~=@%&?|<>[]{}()^;#.$'\" ", "L", 41}, {"0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 12}}; RawScannerReadaheadTriple *t13 = new RawScannerReadaheadTriple [4] {{NULL, "LK", 47}, {"\"", "R", 18}, {"\011\012\014\015\140\223\224", "RK", 13}, {" !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 13}}; RawScannerReadaheadTriple *t14 = new RawScannerReadaheadTriple [4] {{NULL, "LK", 48}, {"'", "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", 43}, {NULL, "L", 43}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$\" ", "L", 43}, {"'", "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", 43}, {NULL, "L", 43}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$' ", "L", 43}, {"\"", "RK", 10}}; RawScannerReadaheadTriple *t18 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 41}, {NULL, "L", 41}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$' ", "L", 41}, {"\"", "RK", 13}}; RawScannerReadaheadTriple *t19 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 41}, {NULL, "L", 41}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$\" ", "L", 41}, {"'", "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, 25, &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] {"EndOfFile"}; const char **p21 = new const char * [1] {"&"}; const char **p22 = new const char * [1] {"("}; const char **p23 = new const char * [1] {")"}; const char **p24 = new const char * [1] {"*"}; const char **p25 = new const char * [1] {"+"}; const char **p26 = new const char * [1] {"-"}; const char **p27 = new const char * [1] {"."}; const char **p28 = new const char * [1] {"walkInteger:"}; const char **p29 = new const char * [1] {";"}; const char **p30 = new const char * [1] {"="}; const char **p31 = new const char * [1] {"?"}; const char **p32 = new const char * [1] {"walkIdentifier:"}; const char **p33 = new const char * [1] {"["}; const char **p34 = new const char * [1] {"|"}; const char **p35 = new const char * [1] {"]"}; const char **p36 = new const char * [1] {"{"}; const char **p37 = new const char * [1] {"}"}; const char **p38 = new const char * [1] {"->"}; const char **p39 = new const char * [1] {".."}; const char **p40 = new const char * [1] {"=>"}; const char **p41 = new const char * [1] {"walkSymbol:"}; const char **p42 = new const char * [1] {"missing end quote for single quoted string"}; const char **p43 = new const char * [1] {"walkString:"}; const char **p44 = new const char * [1] {"// is a comment, / alone is not valid"}; const char **p45 = new const char * [1] {"missing end quote for double quoted string"}; const char **p46 = new const char * [1] {"walkCharacter:"}; const char **p47 = new const char * [1] {"missing end quote for double quoted string"}; const char **p48 = 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 [29] { {"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, "buildToken", 1, p41, 0}, {"SemanticTable", 42, "syntaxError", 1, p42, 43}, {"SemanticTable", 43, "buildToken", 1, p43, 0}, {"SemanticTable", 44, "syntaxError", 1, p44, 0}, {"SemanticTable", 45, "syntaxError", 1, p45, 43}, {"SemanticTable", 46, "buildToken", 1, p46, 0}, {"SemanticTable", 47, "syntaxError", 1, p47, 41}, {"SemanticTable", 48, "syntaxError", 1, p48, 41} }; ScannerTables *scannerTables = new ScannerTables { 20, scannerReadaheadTables, 29, 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 [25] {{"'", "R", 8}, {"]", "RK", 35}, {"/", "R", 9}, {"{", "RK", 36}, {"}", "RK", 37}, {"\"", "R", 10}, {"$", "R", 11}, {NULL, "L", 20}, {"?", "RK", 31}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 5}, {"(", "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", 29}, {"=", "RK", 4}, {"[", "RK", 33}, {"#", "R", 7}, {"|", "RK", 34}}; RawScannerReadaheadTriple *t1 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 26}, {NULL, "L", 26}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<[]{}()^;#:.$'\" ", "L", 26}, {">", "RK", 38}}; RawScannerReadaheadTriple *t2 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 27}, {NULL, "L", 27}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:$'\" ", "L", 27}, {".", "RK", 39}}; 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", 30}, {NULL, "L", 30}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<[]{}()^;#:.$'\" ", "L", 30}, {">", "RK", 40}}; RawScannerReadaheadTriple *t5 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 32}, {NULL, "L", 32}, {"!,+-/\\*~=@%&?|<>[]{}()^;#.$'\" ", "L", 32}, {"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", 42}, {"'", "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", 44}, {" ", "L", 44}, {"\140\223\224", "LK", 44}, {NULL, "LK", 44}, {"=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_\\abcdefghijklmnopqrstuvwxyz{|}~!\"#$%&'()*+,-.0123456789:;<", "LK", 44}, {"/", "R", 16}}; RawScannerReadaheadTriple *t10 = new RawScannerReadaheadTriple [4] {{NULL, "LK", 45}, {"\"", "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", 46}, {" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 46}}; RawScannerReadaheadTriple *t12 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 41}, {NULL, "L", 41}, {"!,+-/\\*~=@%&?|<>[]{}()^;#.$'\" ", "L", 41}, {"0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 12}}; RawScannerReadaheadTriple *t13 = new RawScannerReadaheadTriple [4] {{NULL, "LK", 47}, {"\"", "R", 18}, {"\011\012\014\015\140\223\224", "RK", 13}, {" !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 13}}; RawScannerReadaheadTriple *t14 = new RawScannerReadaheadTriple [4] {{NULL, "LK", 48}, {"'", "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", 43}, {NULL, "L", 43}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$\" ", "L", 43}, {"'", "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", 43}, {NULL, "L", 43}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$' ", "L", 43}, {"\"", "RK", 10}}; RawScannerReadaheadTriple *t18 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 41}, {NULL, "L", 41}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$' ", "L", 41}, {"\"", "RK", 13}}; RawScannerReadaheadTriple *t19 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 41}, {NULL, "L", 41}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$\" ", "L", 41}, {"'", "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, 25, &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] {"EndOfFile"}; const char **p21 = new const char * [1] {"&"}; const char **p22 = new const char * [1] {"("}; const char **p23 = new const char * [1] {")"}; const char **p24 = new const char * [1] {"*"}; const char **p25 = new const char * [1] {"+"}; const char **p26 = new const char * [1] {"-"}; const char **p27 = new const char * [1] {"."}; const char **p28 = new const char * [1] {"walkInteger:"}; const char **p29 = new const char * [1] {";"}; const char **p30 = new const char * [1] {"="}; const char **p31 = new const char * [1] {"?"}; const char **p32 = new const char * [1] {"walkIdentifier:"}; const char **p33 = new const char * [1] {"["}; const char **p34 = new const char * [1] {"|"}; const char **p35 = new const char * [1] {"]"}; const char **p36 = new const char * [1] {"{"}; const char **p37 = new const char * [1] {"}"}; const char **p38 = new const char * [1] {"->"}; const char **p39 = new const char * [1] {".."}; const char **p40 = new const char * [1] {"=>"}; const char **p41 = new const char * [1] {"walkSymbol:"}; const char **p42 = new const char * [1] {"missing end quote for single quoted string"}; const char **p43 = new const char * [1] {"walkString:"}; const char **p44 = new const char * [1] {"// is a comment, / alone is not valid"}; const char **p45 = new const char * [1] {"missing end quote for double quoted string"}; const char **p46 = new const char * [1] {"walkCharacter:"}; const char **p47 = new const char * [1] {"missing end quote for double quoted string"}; const char **p48 = 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 [29] { {"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, "buildToken", 1, p41, 0}, {"SemanticTable", 42, "syntaxError", 1, p42, 43}, {"SemanticTable", 43, "buildToken", 1, p43, 0}, {"SemanticTable", 44, "syntaxError", 1, p44, 0}, {"SemanticTable", 45, "syntaxError", 1, p45, 43}, {"SemanticTable", 46, "buildToken", 1, p46, 0}, {"SemanticTable", 47, "syntaxError", 1, p47, 41}, {"SemanticTable", 48, "syntaxError", 1, p48, 41} }; ScannerTables *scannerTables = new ScannerTables; ScannerTables onStackScannerTables = { 20, scannerReadaheadTables, 29, 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 [25] {{"'", "R", 8}, {"]", "RK", 35}, {"/", "R", 9}, {"{", "RK", 36}, {"}", "RK", 37}, {"\"", "R", 10}, {"$", "R", 11}, {NULL, "L", 20}, {"?", "RK", 31}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 5}, {"(", "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", 29}, {"=", "RK", 4}, {"[", "RK", 33}, {"#", "R", 7}, {"|", "RK", 34}}; RawScannerReadaheadTriple *t1 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 26}, {NULL, "L", 26}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<[]{}()^;#:.$'\" ", "L", 26}, {">", "RK", 38}}; RawScannerReadaheadTriple *t2 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 27}, {NULL, "L", 27}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:$'\" ", "L", 27}, {".", "RK", 39}}; 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", 30}, {NULL, "L", 30}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<[]{}()^;#:.$'\" ", "L", 30}, {">", "RK", 40}}; RawScannerReadaheadTriple *t5 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 32}, {NULL, "L", 32}, {"!,+-/\\*~=@%&?|<>[]{}()^;#.$'\" ", "L", 32}, {"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", 42}, {"'", "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", 44}, {" ", "L", 44}, {"\140\223\224", "LK", 44}, {NULL, "LK", 44}, {"=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_\\abcdefghijklmnopqrstuvwxyz{|}~!\"#$%&'()*+,-.0123456789:;<", "LK", 44}, {"/", "R", 16}}; RawScannerReadaheadTriple *t10 = new RawScannerReadaheadTriple [4] {{NULL, "LK", 45}, {"\"", "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", 46}, {" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 46}}; RawScannerReadaheadTriple *t12 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 41}, {NULL, "L", 41}, {"!,+-/\\*~=@%&?|<>[]{}()^;#.$'\" ", "L", 41}, {"0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 12}}; RawScannerReadaheadTriple *t13 = new RawScannerReadaheadTriple [4] {{NULL, "LK", 47}, {"\"", "R", 18}, {"\011\012\014\015\140\223\224", "RK", 13}, {" !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 13}}; RawScannerReadaheadTriple *t14 = new RawScannerReadaheadTriple [4] {{NULL, "LK", 48}, {"'", "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", 43}, {NULL, "L", 43}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$\" ", "L", 43}, {"'", "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", 43}, {NULL, "L", 43}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$' ", "L", 43}, {"\"", "RK", 10}}; RawScannerReadaheadTriple *t18 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 41}, {NULL, "L", 41}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$' ", "L", 41}, {"\"", "RK", 13}}; RawScannerReadaheadTriple *t19 = new RawScannerReadaheadTriple [4] {{"\011\012\014\015\140\223\224", "L", 41}, {NULL, "L", 41}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$\" ", "L", 41}, {"'", "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, 25, &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] {"EndOfFile"}; const char **p21 = new const char * [1] {"&"}; const char **p22 = new const char * [1] {"("}; const char **p23 = new const char * [1] {")"}; const char **p24 = new const char * [1] {"*"}; const char **p25 = new const char * [1] {"+"}; const char **p26 = new const char * [1] {"-"}; const char **p27 = new const char * [1] {"."}; const char **p28 = new const char * [1] {"walkInteger:"}; const char **p29 = new const char * [1] {";"}; const char **p30 = new const char * [1] {"="}; const char **p31 = new const char * [1] {"?"}; const char **p32 = new const char * [1] {"walkIdentifier:"}; const char **p33 = new const char * [1] {"["}; const char **p34 = new const char * [1] {"|"}; const char **p35 = new const char * [1] {"]"}; const char **p36 = new const char * [1] {"{"}; const char **p37 = new const char * [1] {"}"}; const char **p38 = new const char * [1] {"->"}; const char **p39 = new const char * [1] {".."}; const char **p40 = new const char * [1] {"=>"}; const char **p41 = new const char * [1] {"walkSymbol:"}; const char **p42 = new const char * [1] {"missing end quote for single quoted string"}; const char **p43 = new const char * [1] {"walkString:"}; const char **p44 = new const char * [1] {"// is a comment, / alone is not valid"}; const char **p45 = new const char * [1] {"missing end quote for double quoted string"}; const char **p46 = new const char * [1] {"walkCharacter:"}; const char **p47 = new const char * [1] {"missing end quote for double quoted string"}; const char **p48 = 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 [29] { {"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, "buildToken", 1, p41, 0}, {"SemanticTable", 42, "syntaxError", 1, p42, 43}, {"SemanticTable", 43, "buildToken", 1, p43, 0}, {"SemanticTable", 44, "syntaxError", 1, p44, 0}, {"SemanticTable", 45, "syntaxError", 1, p45, 43}, {"SemanticTable", 46, "buildToken", 1, p46, 0}, {"SemanticTable", 47, "syntaxError", 1, p47, 41}, {"SemanticTable", 48, "syntaxError", 1, p48, 41} }; ScannerTables *scannerTables = new ScannerTables; ScannerTables onStackScannerTables = { 20, scannerReadaheadTables, 29, 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 ("'", "R", 8), asList ("]", "RK", 35), asList ("/", "R", 9), asList ("{", "RK", 36), asList ("}", "RK", 37), asList ("\"", "R", 10), asList ("$", "R", 11), asList (("256") "L" 20), asList ("?", "RK", 31), asList ("ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 5), 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", 29), asList ("=", "RK", 4), asList ("[", "RK", 33), asList ("#", "R", 7), asList ("|", "RK", 34)), asList ("ScannerReadaheadTable", 1, asList (("9 10 12 13 96 147 148 256") "L" 26), asList ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<[]{}()^;#:.$'\" ", "L", 26), asList (">", "RK", 38)), asList ("ScannerReadaheadTable", 2, asList (("9 10 12 13 96 147 148 256") "L" 27), asList ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:$'\" ", "L", 27), asList (".", "RK", 39)), 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" 30), asList ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<[]{}()^;#:.$'\" ", "L", 30), asList (">", "RK", 40)), asList ("ScannerReadaheadTable", 5, asList (("9 10 12 13 96 147 148 256") "L" 32), asList ("!,+-/\\*~=@%&?|<>[]{}()^;#.$'\" ", "L", 32), 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" 42), 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" 44), asList (" ", "L", 44), asList (("96 147 148 256") "LK" 44), asList ("=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_\\abcdefghijklmnopqrstuvwxyz{|}~!\"#$%&'()*+,-.0123456789:;<", "LK", 44), asList ("/", "R", 16)), asList ("ScannerReadaheadTable", 10, asList (("256") "LK" 45), 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" 46), asList (" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~", "RK", 46)), asList ("ScannerReadaheadTable", 12, asList (("9 10 12 13 96 147 148 256") "L" 41), asList ("!,+-/\\*~=@%&?|<>[]{}()^;#.$'\" ", "L", 41), asList ("0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", "RK", 12)), asList ("ScannerReadaheadTable", 13, asList (("256") "LK" 47), 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" 48), 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" 43), asList ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$\" ", "L", 43), 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" 43), asList ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$' ", "L", 43), asList ("\"", "RK", 10)), asList ("ScannerReadaheadTable", 18, asList (("9 10 12 13 96 147 148 256") "L" 41), asList ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$' ", "L", 41), asList ("\"", "RK", 13)), asList ("ScannerReadaheadTable", 19, asList (("9 10 12 13 96 147 148 256") "L" 41), asList ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789!,+-/\\*~=@%&?|<>[]{}()^;#:.$\" ", "L", 41), asList ("'", "RK", 14)), asList ("SemanticTable", 20, buildToken, asList ("EndOfFile"), 0), asList ("SemanticTable", 21, buildToken, asList ("&"), 0), asList ("SemanticTable", 22, buildToken, asList ("("), 0), asList ("SemanticTable", 23, buildToken, asList (")"), 0), asList ("SemanticTable", 24, buildToken, asList ("*"), 0), asList ("SemanticTable", 25, buildToken, asList ("+"), 0), asList ("SemanticTable", 26, buildToken, asList ("-"), 0), asList ("SemanticTable", 27, buildToken, asList ("."), 0), asList ("SemanticTable", 28, buildToken, asList ("walkInteger:"), 0), asList ("SemanticTable", 29, buildToken, asList (";"), 0), asList ("SemanticTable", 30, buildToken, asList ("="), 0), asList ("SemanticTable", 31, buildToken, asList ("?"), 0), asList ("SemanticTable", 32, buildToken, asList ("walkIdentifier:"), 0), asList ("SemanticTable", 33, buildToken, asList ("["), 0), asList ("SemanticTable", 34, buildToken, asList ("|"), 0), asList ("SemanticTable", 35, buildToken, asList ("]"), 0), asList ("SemanticTable", 36, buildToken, asList ("{"), 0), asList ("SemanticTable", 37, buildToken, asList ("}"), 0), asList ("SemanticTable", 38, buildToken, asList ("->"), 0), asList ("SemanticTable", 39, buildToken, asList (".."), 0), asList ("SemanticTable", 40, buildToken, asList ("=>"), 0), asList ("SemanticTable", 41, buildToken, asList ("walkSymbol:"), 0), asList ("SemanticTable", 42, syntaxError, asList ("missing end quote for single quoted string"), 43), asList ("SemanticTable", 43, buildToken, asList ("walkString:"), 0), asList ("SemanticTable", 44, syntaxError, asList ("// is a comment, / alone is not valid"), 0), asList ("SemanticTable", 45, syntaxError, asList ("missing end quote for double quoted string"), 43), asList ("SemanticTable", 46, buildToken, asList ("walkCharacter:"), 0), asList ("SemanticTable", 47, syntaxError, asList ("missing end quote for double quoted string"), 41), asList ("SemanticTable", 48, syntaxError, asList ("missing end quote for single quoted string"), 41));}