From 404566e7ba8fb5a138810e25a405f555cd648c29 Mon Sep 17 00:00:00 2001 From: Phodal Huang Date: Thu, 8 Dec 2022 17:42:48 +0800 Subject: [PATCH] build: remove typescript & sql language support #29 --- README.md | 6 +- languages/g4/TypeScriptLexer.g4 | 707 --------------- languages/g4/TypeScriptLexer.tokens | 258 ------ languages/g4/TypeScriptParser.g4 | 839 ------------------ .../analysis/tsapp/ts_ident_app.go | 44 - .../tsapp/ts_ident_app_regression_test.go | 30 - .../analysis/tsapp/ts_ident_app_test.go | 243 ----- .../typescript_ident_converter.go | 112 --- .../typescript_ident_listener.go | 257 ------ scripts/compile-antlr.sh | 2 - 10 files changed, 1 insertion(+), 2497 deletions(-) delete mode 100644 languages/g4/TypeScriptLexer.g4 delete mode 100644 languages/g4/TypeScriptLexer.tokens delete mode 100644 languages/g4/TypeScriptParser.g4 delete mode 100644 pkg/application/analysis/tsapp/ts_ident_app.go delete mode 100644 pkg/application/analysis/tsapp/ts_ident_app_regression_test.go delete mode 100644 pkg/application/analysis/tsapp/ts_ident_app_test.go delete mode 100644 pkg/infrastructure/ast/ast_typescript/typescript_ident_converter.go delete mode 100644 pkg/infrastructure/ast/ast_typescript/typescript_ident_listener.go diff --git a/README.md b/README.md index b4f8dec0..296abe7c 100644 --- a/README.md +++ b/README.md @@ -19,11 +19,7 @@ Refactoring Modeling: ![Refactoring Modeling](docs/images/model.svg) - - Languages Support - - Java (full features) - - Golang (support: analysis, todo, concept, git, suggest) - - TypeScript / JavaScript (TBC) - - Python (support: analysis, todo, concept, git, suggest) + - Languages Support: Java (full features) Features List: diff --git a/languages/g4/TypeScriptLexer.g4 b/languages/g4/TypeScriptLexer.g4 deleted file mode 100644 index 29d296ac..00000000 --- a/languages/g4/TypeScriptLexer.g4 +++ /dev/null @@ -1,707 +0,0 @@ -lexer grammar TypeScriptLexer; - -channels { ERROR } - -options { - superClass=TypeScriptBaseLexer; -} - - -HashBangLine: { p.IsStartOfFile()}? '#!' ~[\r\n\u2028\u2029]*; // only allowed at start -MultiLineComment: '/*' .*? '*/' -> channel(HIDDEN); -SingleLineComment: '//' ~[\r\n\u2028\u2029]* -> channel(HIDDEN); -RegularExpressionLiteral: '/' RegularExpressionFirstChar RegularExpressionChar* {p.IsRegexPossible()}? '/' IdentifierPart*; - -OpenBracket: '['; -CloseBracket: ']'; -OpenParen: '('; -CloseParen: ')'; -OpenBrace: '{' {l.ProcessOpenBrace();}; -CloseBrace: '}' {l.ProcessCloseBrace();}; -SemiColon: ';'; -Comma: ','; -Assign: '='; -QuestionMark: '?'; -Colon: ':'; -Ellipsis: '...'; -Dot: '.'; -PlusPlus: '++'; -MinusMinus: '--'; -Plus: '+'; -Minus: '-'; -BitNot: '~'; -Not: '!'; -Multiply: '*'; -Lodash: '_'; -Dollar: '$'; -Divide: '/'; -Modulus: '%'; -Power: '**'; -NullCoalesce: '??'; -Hashtag: '#'; -RightShiftArithmetic: '>>'; -LeftShiftArithmetic: '<<'; -RightShiftLogical: '>>>'; -LessThan: '<'; -MoreThan: '>'; -LessThanEquals: '<='; -GreaterThanEquals: '>='; -Equals_: '=='; -NotEquals: '!='; -IdentityEquals: '==='; -IdentityNotEquals: '!=='; -BitAnd: '&'; -BitXOr: '^'; -BitOr: '|'; -And: '&&'; -Or: '||'; -MultiplyAssign: '*='; -DivideAssign: '/='; -ModulusAssign: '%='; -PlusAssign: '+='; -MinusAssign: '-='; -LeftShiftArithmeticAssign: '<<='; -RightShiftArithmeticAssign: '>>='; -RightShiftLogicalAssign: '>>>='; -BitAndAssign: '&='; -BitXorAssign: '^='; -BitOrAssign: '|='; -ARROW: '=>'; -PowerAssign: '**='; - -/// Null Literals - -NullLiteral: 'null'; - -/// Boolean Literals - -BooleanLiteral: 'true' - | 'false'; - -/// Numeric Literals - -DecimalLiteral: DecimalIntegerLiteral '.' [0-9]* ExponentPart? - | '.' [0-9]+ ExponentPart? - | DecimalIntegerLiteral ExponentPart? - ; - -/// Numeric Literals - -HexIntegerLiteral: '0' [xX] HexDigit+; -OctalIntegerLiteral: '0' [0-7]+ {!p.IsStrictMode()}?; -OctalIntegerLiteral2: '0' [oO] [0-7]+; -BinaryIntegerLiteral: '0' [bB] [01]+; - -/// Keywords - -Break: 'break'; -Do: 'do'; -Instanceof: 'instanceof'; -Typeof: 'typeof'; -Case: 'case'; -Else: 'else'; -New: 'new'; -Var: 'var'; -Catch: 'catch'; -Finally: 'finally'; -Return: 'return'; -Void: 'void'; -Continue: 'continue'; -For: 'for'; -Switch: 'switch'; -While: 'while'; -Debugger: 'debugger'; -Function: 'function'; -This: 'this'; -With: 'with'; -Default: 'default'; -If: 'if'; -Throw: 'throw'; -Delete: 'delete'; -In: 'in'; -Try: 'try'; -As: 'as'; -From: 'from'; -ReadOnly: 'readonly'; -Async: 'async'; - -/// Future Reserved Words - -Class: 'class'; -Enum: 'enum'; -Extends: 'extends'; -Super: 'super'; -Const: 'const'; -Export: 'export'; -Import: 'import'; - -Await: 'await'; - -/// The following tokens are also considered to be FutureReservedWords -/// when parsing strict mode - -Implements: 'implements' ; -Let: 'let' ; -Private: 'private' ; -Public: 'public' ; -Interface: 'interface' ; -Package: 'package' ; -Protected: 'protected' ; -Static: 'static' ; -Yield: 'yield' ; - -//keywords: - -ANY : 'any'; -NUMBER: 'number'; -BOOLEAN: 'boolean'; -STRING: 'string'; -SYMBOL: 'symbol'; - - -Type: 'type'; - -Get: 'get '; -Set: 'set '; - -Constructor: 'constructor'; -Namespace: 'namespace'; -Require: 'require'; -Module: 'module'; -Declare: 'declare'; - -Abstract: 'abstract'; - -Is: 'is'; - -// -// Ext.2 Additions to 1.8: Decorators -// -At: '@'; - -/// Identifier Names and Identifiers - -Identifier: IdentifierStart IdentifierPart*; - -/// String Literals -StringLiteral: ('"' DoubleStringCharacter* '"' - | '\'' SingleStringCharacter* '\'') {l.ProcessStringLiteral();} - ; - -TemplateStringLiteral: '`' ('\\`' | ~'`')* '`'; - -WhiteSpaces: [\t\u000B\u000C\u0020\u00A0]+ -> channel(HIDDEN); - -LineTerminator: [\r\n\u2028\u2029] -> channel(HIDDEN); - -/// Comments - - -HtmlComment: '' -> channel(HIDDEN); -CDataComment: '' -> channel(HIDDEN); -UnexpectedCharacter: . -> channel(ERROR); - -// Fragment rules - -fragment DoubleStringCharacter - : ~["\\\r\n] - | '\\' EscapeSequence - | LineContinuation - ; - -fragment SingleStringCharacter - : ~['\\\r\n] - | '\\' EscapeSequence - | LineContinuation - ; - -fragment EscapeSequence - : CharacterEscapeSequence - | '0' // no digit ahead! TODO - | HexEscapeSequence - | UnicodeEscapeSequence - | ExtendedUnicodeEscapeSequence - ; - -fragment CharacterEscapeSequence - : SingleEscapeCharacter - | NonEscapeCharacter - ; - -fragment HexEscapeSequence - : 'x' HexDigit HexDigit - ; - -fragment UnicodeEscapeSequence - : 'u' HexDigit HexDigit HexDigit HexDigit - ; - -fragment ExtendedUnicodeEscapeSequence - : 'u' '{' HexDigit+ '}' - ; - -fragment SingleEscapeCharacter - : ['"\\bfnrtv] - ; - -fragment NonEscapeCharacter - : ~['"\\bfnrtv0-9xu\r\n] - ; - -fragment EscapeCharacter - : SingleEscapeCharacter - | [0-9] - | [xu] - ; - -fragment LineContinuation - : '\\' [\r\n\u2028\u2029] - ; - -fragment HexDigit - : [0-9a-fA-F] - ; - -fragment DecimalIntegerLiteral - : '0' - | [1-9] [0-9]* - ; - -fragment ExponentPart - : [eE] [+-]? [0-9]+ - ; - -fragment IdentifierPart - : IdentifierStart - | UnicodeCombiningMark - | UnicodeDigit - | UnicodeConnectorPunctuation - | '\u200C' - | '\u200D' - ; - -fragment IdentifierStart - : UnicodeLetter - | [$_] - | '\\' UnicodeEscapeSequence - ; - -fragment UnicodeLetter - : [\u0041-\u005A] - | [\u0061-\u007A] - | [\u00AA] - | [\u00B5] - | [\u00BA] - | [\u00C0-\u00D6] - | [\u00D8-\u00F6] - | [\u00F8-\u021F] - | [\u0222-\u0233] - | [\u0250-\u02AD] - | [\u02B0-\u02B8] - | [\u02BB-\u02C1] - | [\u02D0-\u02D1] - | [\u02E0-\u02E4] - | [\u02EE] - | [\u037A] - | [\u0386] - | [\u0388-\u038A] - | [\u038C] - | [\u038E-\u03A1] - | [\u03A3-\u03CE] - | [\u03D0-\u03D7] - | [\u03DA-\u03F3] - | [\u0400-\u0481] - | [\u048C-\u04C4] - | [\u04C7-\u04C8] - | [\u04CB-\u04CC] - | [\u04D0-\u04F5] - | [\u04F8-\u04F9] - | [\u0531-\u0556] - | [\u0559] - | [\u0561-\u0587] - | [\u05D0-\u05EA] - | [\u05F0-\u05F2] - | [\u0621-\u063A] - | [\u0640-\u064A] - | [\u0671-\u06D3] - | [\u06D5] - | [\u06E5-\u06E6] - | [\u06FA-\u06FC] - | [\u0710] - | [\u0712-\u072C] - | [\u0780-\u07A5] - | [\u0905-\u0939] - | [\u093D] - | [\u0950] - | [\u0958-\u0961] - | [\u0985-\u098C] - | [\u098F-\u0990] - | [\u0993-\u09A8] - | [\u09AA-\u09B0] - | [\u09B2] - | [\u09B6-\u09B9] - | [\u09DC-\u09DD] - | [\u09DF-\u09E1] - | [\u09F0-\u09F1] - | [\u0A05-\u0A0A] - | [\u0A0F-\u0A10] - | [\u0A13-\u0A28] - | [\u0A2A-\u0A30] - | [\u0A32-\u0A33] - | [\u0A35-\u0A36] - | [\u0A38-\u0A39] - | [\u0A59-\u0A5C] - | [\u0A5E] - | [\u0A72-\u0A74] - | [\u0A85-\u0A8B] - | [\u0A8D] - | [\u0A8F-\u0A91] - | [\u0A93-\u0AA8] - | [\u0AAA-\u0AB0] - | [\u0AB2-\u0AB3] - | [\u0AB5-\u0AB9] - | [\u0ABD] - | [\u0AD0] - | [\u0AE0] - | [\u0B05-\u0B0C] - | [\u0B0F-\u0B10] - | [\u0B13-\u0B28] - | [\u0B2A-\u0B30] - | [\u0B32-\u0B33] - | [\u0B36-\u0B39] - | [\u0B3D] - | [\u0B5C-\u0B5D] - | [\u0B5F-\u0B61] - | [\u0B85-\u0B8A] - | [\u0B8E-\u0B90] - | [\u0B92-\u0B95] - | [\u0B99-\u0B9A] - | [\u0B9C] - | [\u0B9E-\u0B9F] - | [\u0BA3-\u0BA4] - | [\u0BA8-\u0BAA] - | [\u0BAE-\u0BB5] - | [\u0BB7-\u0BB9] - | [\u0C05-\u0C0C] - | [\u0C0E-\u0C10] - | [\u0C12-\u0C28] - | [\u0C2A-\u0C33] - | [\u0C35-\u0C39] - | [\u0C60-\u0C61] - | [\u0C85-\u0C8C] - | [\u0C8E-\u0C90] - | [\u0C92-\u0CA8] - | [\u0CAA-\u0CB3] - | [\u0CB5-\u0CB9] - | [\u0CDE] - | [\u0CE0-\u0CE1] - | [\u0D05-\u0D0C] - | [\u0D0E-\u0D10] - | [\u0D12-\u0D28] - | [\u0D2A-\u0D39] - | [\u0D60-\u0D61] - | [\u0D85-\u0D96] - | [\u0D9A-\u0DB1] - | [\u0DB3-\u0DBB] - | [\u0DBD] - | [\u0DC0-\u0DC6] - | [\u0E01-\u0E30] - | [\u0E32-\u0E33] - | [\u0E40-\u0E46] - | [\u0E81-\u0E82] - | [\u0E84] - | [\u0E87-\u0E88] - | [\u0E8A] - | [\u0E8D] - | [\u0E94-\u0E97] - | [\u0E99-\u0E9F] - | [\u0EA1-\u0EA3] - | [\u0EA5] - | [\u0EA7] - | [\u0EAA-\u0EAB] - | [\u0EAD-\u0EB0] - | [\u0EB2-\u0EB3] - | [\u0EBD-\u0EC4] - | [\u0EC6] - | [\u0EDC-\u0EDD] - | [\u0F00] - | [\u0F40-\u0F6A] - | [\u0F88-\u0F8B] - | [\u1000-\u1021] - | [\u1023-\u1027] - | [\u1029-\u102A] - | [\u1050-\u1055] - | [\u10A0-\u10C5] - | [\u10D0-\u10F6] - | [\u1100-\u1159] - | [\u115F-\u11A2] - | [\u11A8-\u11F9] - | [\u1200-\u1206] - | [\u1208-\u1246] - | [\u1248] - | [\u124A-\u124D] - | [\u1250-\u1256] - | [\u1258] - | [\u125A-\u125D] - | [\u1260-\u1286] - | [\u1288] - | [\u128A-\u128D] - | [\u1290-\u12AE] - | [\u12B0] - | [\u12B2-\u12B5] - | [\u12B8-\u12BE] - | [\u12C0] - | [\u12C2-\u12C5] - | [\u12C8-\u12CE] - | [\u12D0-\u12D6] - | [\u12D8-\u12EE] - | [\u12F0-\u130E] - | [\u1310] - | [\u1312-\u1315] - | [\u1318-\u131E] - | [\u1320-\u1346] - | [\u1348-\u135A] - | [\u13A0-\u13B0] - | [\u13B1-\u13F4] - | [\u1401-\u1676] - | [\u1681-\u169A] - | [\u16A0-\u16EA] - | [\u1780-\u17B3] - | [\u1820-\u1877] - | [\u1880-\u18A8] - | [\u1E00-\u1E9B] - | [\u1EA0-\u1EE0] - | [\u1EE1-\u1EF9] - | [\u1F00-\u1F15] - | [\u1F18-\u1F1D] - | [\u1F20-\u1F39] - | [\u1F3A-\u1F45] - | [\u1F48-\u1F4D] - | [\u1F50-\u1F57] - | [\u1F59] - | [\u1F5B] - | [\u1F5D] - | [\u1F5F-\u1F7D] - | [\u1F80-\u1FB4] - | [\u1FB6-\u1FBC] - | [\u1FBE] - | [\u1FC2-\u1FC4] - | [\u1FC6-\u1FCC] - | [\u1FD0-\u1FD3] - | [\u1FD6-\u1FDB] - | [\u1FE0-\u1FEC] - | [\u1FF2-\u1FF4] - | [\u1FF6-\u1FFC] - | [\u207F] - | [\u2102] - | [\u2107] - | [\u210A-\u2113] - | [\u2115] - | [\u2119-\u211D] - | [\u2124] - | [\u2126] - | [\u2128] - | [\u212A-\u212D] - | [\u212F-\u2131] - | [\u2133-\u2139] - | [\u2160-\u2183] - | [\u3005-\u3007] - | [\u3021-\u3029] - | [\u3031-\u3035] - | [\u3038-\u303A] - | [\u3041-\u3094] - | [\u309D-\u309E] - | [\u30A1-\u30FA] - | [\u30FC-\u30FE] - | [\u3105-\u312C] - | [\u3131-\u318E] - | [\u31A0-\u31B7] - | [\u3400-\u4DBF] - | [\u4E00-\u9FFF] - | [\uA000-\uA48C] - | [\uAC00] - | [\uD7A3] - | [\uF900-\uFA2D] - | [\uFB00-\uFB06] - | [\uFB13-\uFB17] - | [\uFB1D] - | [\uFB1F-\uFB28] - | [\uFB2A-\uFB36] - | [\uFB38-\uFB3C] - | [\uFB3E] - | [\uFB40-\uFB41] - | [\uFB43-\uFB44] - | [\uFB46-\uFBB1] - | [\uFBD3-\uFD3D] - | [\uFD50-\uFD8F] - | [\uFD92-\uFDC7] - | [\uFDF0-\uFDFB] - | [\uFE70-\uFE72] - | [\uFE74] - | [\uFE76-\uFEFC] - | [\uFF21-\uFF3A] - | [\uFF41-\uFF5A] - | [\uFF66-\uFFBE] - | [\uFFC2-\uFFC7] - | [\uFFCA-\uFFCF] - | [\uFFD2-\uFFD7] - | [\uFFDA-\uFFDC] - ; - -fragment UnicodeCombiningMark - : [\u0300-\u034E] - | [\u0360-\u0362] - | [\u0483-\u0486] - | [\u0591-\u05A1] - | [\u05A3-\u05B9] - | [\u05BB-\u05BD] - | [\u05BF] - | [\u05C1-\u05C2] - | [\u05C4] - | [\u064B-\u0655] - | [\u0670] - | [\u06D6-\u06DC] - | [\u06DF-\u06E4] - | [\u06E7-\u06E8] - | [\u06EA-\u06ED] - | [\u0711] - | [\u0730-\u074A] - | [\u07A6-\u07B0] - | [\u0901-\u0903] - | [\u093C] - | [\u093E-\u094D] - | [\u0951-\u0954] - | [\u0962-\u0963] - | [\u0981-\u0983] - | [\u09BC-\u09C4] - | [\u09C7-\u09C8] - | [\u09CB-\u09CD] - | [\u09D7] - | [\u09E2-\u09E3] - | [\u0A02] - | [\u0A3C] - | [\u0A3E-\u0A42] - | [\u0A47-\u0A48] - | [\u0A4B-\u0A4D] - | [\u0A70-\u0A71] - | [\u0A81-\u0A83] - | [\u0ABC] - | [\u0ABE-\u0AC5] - | [\u0AC7-\u0AC9] - | [\u0ACB-\u0ACD] - | [\u0B01-\u0B03] - | [\u0B3C] - | [\u0B3E-\u0B43] - | [\u0B47-\u0B48] - | [\u0B4B-\u0B4D] - | [\u0B56-\u0B57] - | [\u0B82-\u0B83] - | [\u0BBE-\u0BC2] - | [\u0BC6-\u0BC8] - | [\u0BCA-\u0BCD] - | [\u0BD7] - | [\u0C01-\u0C03] - | [\u0C3E-\u0C44] - | [\u0C46-\u0C48] - | [\u0C4A-\u0C4D] - | [\u0C55-\u0C56] - | [\u0C82-\u0C83] - | [\u0CBE-\u0CC4] - | [\u0CC6-\u0CC8] - | [\u0CCA-\u0CCD] - | [\u0CD5-\u0CD6] - | [\u0D02-\u0D03] - | [\u0D3E-\u0D43] - | [\u0D46-\u0D48] - | [\u0D4A-\u0D4D] - | [\u0D57] - | [\u0D82-\u0D83] - | [\u0DCA] - | [\u0DCF-\u0DD4] - | [\u0DD6] - | [\u0DD8-\u0DDF] - | [\u0DF2-\u0DF3] - | [\u0E31] - | [\u0E34-\u0E3A] - | [\u0E47-\u0E4E] - | [\u0EB1] - | [\u0EB4-\u0EB9] - | [\u0EBB-\u0EBC] - | [\u0EC8-\u0ECD] - | [\u0F18-\u0F19] - | [\u0F35] - | [\u0F37] - | [\u0F39] - | [\u0F3E-\u0F3F] - | [\u0F71-\u0F84] - | [\u0F86-\u0F87] - | [\u0F90-\u0F97] - | [\u0F99-\u0FBC] - | [\u0FC6] - | [\u102C-\u1032] - | [\u1036-\u1039] - | [\u1056-\u1059] - | [\u17B4-\u17D3] - | [\u18A9] - | [\u20D0-\u20DC] - | [\u20E1] - | [\u302A-\u302F] - | [\u3099-\u309A] - | [\uFB1E] - | [\uFE20-\uFE23] - ; - -fragment UnicodeDigit - : [\u0030-\u0039] - | [\u0660-\u0669] - | [\u06F0-\u06F9] - | [\u0966-\u096F] - | [\u09E6-\u09EF] - | [\u0A66-\u0A6F] - | [\u0AE6-\u0AEF] - | [\u0B66-\u0B6F] - | [\u0BE7-\u0BEF] - | [\u0C66-\u0C6F] - | [\u0CE6-\u0CEF] - | [\u0D66-\u0D6F] - | [\u0E50-\u0E59] - | [\u0ED0-\u0ED9] - | [\u0F20-\u0F29] - | [\u1040-\u1049] - | [\u1369-\u1371] - | [\u17E0-\u17E9] - | [\u1810-\u1819] - | [\uFF10-\uFF19] - ; - -fragment UnicodeConnectorPunctuation - : [\u005F] - | [\u203F-\u2040] - | [\u30FB] - | [\uFE33-\uFE34] - | [\uFE4D-\uFE4F] - | [\uFF3F] - | [\uFF65] - ; - -fragment RegularExpressionFirstChar - : ~[*\r\n\u2028\u2029\\/[] - | RegularExpressionBackslashSequence - | '[' RegularExpressionClassChar* ']' - ; - -fragment RegularExpressionChar - : ~[\r\n\u2028\u2029\\/[] - | RegularExpressionBackslashSequence - | '[' RegularExpressionClassChar* ']' - ; - -fragment RegularExpressionClassChar - : ~[\r\n\u2028\u2029\]\\] - | RegularExpressionBackslashSequence - ; - -fragment RegularExpressionBackslashSequence - : '\\' ~[\r\n\u2028\u2029] - ; - diff --git a/languages/g4/TypeScriptLexer.tokens b/languages/g4/TypeScriptLexer.tokens deleted file mode 100644 index 64e7e7ca..00000000 --- a/languages/g4/TypeScriptLexer.tokens +++ /dev/null @@ -1,258 +0,0 @@ -HashBangLine=1 -MultiLineComment=2 -SingleLineComment=3 -RegularExpressionLiteral=4 -OpenBracket=5 -CloseBracket=6 -OpenParen=7 -CloseParen=8 -OpenBrace=9 -CloseBrace=10 -SemiColon=11 -Comma=12 -Assign=13 -QuestionMark=14 -Colon=15 -Ellipsis=16 -Dot=17 -PlusPlus=18 -MinusMinus=19 -Plus=20 -Minus=21 -BitNot=22 -Not=23 -Multiply=24 -Lodash=25 -Dollar=26 -Divide=27 -Modulus=28 -Power=29 -NullCoalesce=30 -Hashtag=31 -RightShiftArithmetic=32 -LeftShiftArithmetic=33 -RightShiftLogical=34 -LessThan=35 -MoreThan=36 -LessThanEquals=37 -GreaterThanEquals=38 -Equals_=39 -NotEquals=40 -IdentityEquals=41 -IdentityNotEquals=42 -BitAnd=43 -BitXOr=44 -BitOr=45 -And=46 -Or=47 -MultiplyAssign=48 -DivideAssign=49 -ModulusAssign=50 -PlusAssign=51 -MinusAssign=52 -LeftShiftArithmeticAssign=53 -RightShiftArithmeticAssign=54 -RightShiftLogicalAssign=55 -BitAndAssign=56 -BitXorAssign=57 -BitOrAssign=58 -ARROW=59 -PowerAssign=60 -NullLiteral=61 -BooleanLiteral=62 -DecimalLiteral=63 -HexIntegerLiteral=64 -OctalIntegerLiteral=65 -OctalIntegerLiteral2=66 -BinaryIntegerLiteral=67 -Break=68 -Do=69 -Instanceof=70 -Typeof=71 -Case=72 -Else=73 -New=74 -Var=75 -Catch=76 -Finally=77 -Return=78 -Void=79 -Continue=80 -For=81 -Switch=82 -While=83 -Debugger=84 -Function=85 -This=86 -With=87 -Default=88 -If=89 -Throw=90 -Delete=91 -In=92 -Try=93 -As=94 -From=95 -ReadOnly=96 -Async=97 -Class=98 -Enum=99 -Extends=100 -Super=101 -Const=102 -Export=103 -Import=104 -Await=105 -Implements=106 -Let=107 -Private=108 -Public=109 -Interface=110 -Package=111 -Protected=112 -Static=113 -Yield=114 -ANY=115 -NUMBER=116 -BOOLEAN=117 -STRING=118 -SYMBOL=119 -Type=120 -Get=121 -Set=122 -Constructor=123 -Namespace=124 -Require=125 -Module=126 -Declare=127 -Abstract=128 -Is=129 -At=130 -Identifier=131 -StringLiteral=132 -TemplateStringLiteral=133 -WhiteSpaces=134 -LineTerminator=135 -HtmlComment=136 -CDataComment=137 -UnexpectedCharacter=138 -'['=5 -']'=6 -'('=7 -')'=8 -'{'=9 -'}'=10 -';'=11 -','=12 -'='=13 -'?'=14 -':'=15 -'...'=16 -'.'=17 -'++'=18 -'--'=19 -'+'=20 -'-'=21 -'~'=22 -'!'=23 -'*'=24 -'_'=25 -'$'=26 -'/'=27 -'%'=28 -'**'=29 -'??'=30 -'#'=31 -'>>'=32 -'<<'=33 -'>>>'=34 -'<'=35 -'>'=36 -'<='=37 -'>='=38 -'=='=39 -'!='=40 -'==='=41 -'!=='=42 -'&'=43 -'^'=44 -'|'=45 -'&&'=46 -'||'=47 -'*='=48 -'/='=49 -'%='=50 -'+='=51 -'-='=52 -'<<='=53 -'>>='=54 -'>>>='=55 -'&='=56 -'^='=57 -'|='=58 -'=>'=59 -'**='=60 -'null'=61 -'break'=68 -'do'=69 -'instanceof'=70 -'typeof'=71 -'case'=72 -'else'=73 -'new'=74 -'var'=75 -'catch'=76 -'finally'=77 -'return'=78 -'void'=79 -'continue'=80 -'for'=81 -'switch'=82 -'while'=83 -'debugger'=84 -'function'=85 -'this'=86 -'with'=87 -'default'=88 -'if'=89 -'throw'=90 -'delete'=91 -'in'=92 -'try'=93 -'as'=94 -'from'=95 -'readonly'=96 -'async'=97 -'class'=98 -'enum'=99 -'extends'=100 -'super'=101 -'const'=102 -'export'=103 -'import'=104 -'await'=105 -'implements'=106 -'let'=107 -'private'=108 -'public'=109 -'interface'=110 -'package'=111 -'protected'=112 -'static'=113 -'yield'=114 -'any'=115 -'number'=116 -'boolean'=117 -'string'=118 -'symbol'=119 -'type'=120 -'get '=121 -'set '=122 -'constructor'=123 -'namespace'=124 -'require'=125 -'module'=126 -'declare'=127 -'abstract'=128 -'is'=129 -'@'=130 diff --git a/languages/g4/TypeScriptParser.g4 b/languages/g4/TypeScriptParser.g4 deleted file mode 100644 index 92c92e5e..00000000 --- a/languages/g4/TypeScriptParser.g4 +++ /dev/null @@ -1,839 +0,0 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2014 by Bart Kiers (original author) and Alexandre Vitorelli (contributor -> ported to CSharp) - * Copyright (c) 2017 by Ivan Kochurkin (Positive Technologies): - added ECMAScript 6 support, cleared and transformed to the universal grammar. - * Copyright (c) 2018 by Juan Alvarez (contributor -> ported to Go) - * Copyright (c) 2019 by Andrii Artiushok (contributor -> added TypeScript support) - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ -parser grammar TypeScriptParser; - -options { - tokenVocab=TypeScriptLexer; - superClass=TypeScriptBaseParser; -} - -// SupportSyntax - -initializer - : '=' singleExpression - ; - -bindingPattern - : (arrayLiteral | objectLiteral) - ; - -// TypeScript SPart -// A.1 Types - -typeParameters - : '<' typeParameterList? '>' - ; - -typeParameterList - : typeParameter (',' typeParameter)* - ; - -typeParameter - : Identifier constraint? - | typeParameters - ; - -constraint - : 'extends' type_ - ; - -typeArguments - : '<' typeArgumentList? '>' - ; - -typeArgumentList - : typeArgument (',' typeArgument)* - ; - -typeArgument - : type_ - ; - -type_ - : unionOrIntersectionOrPrimaryType - | functionType - | constructorType - | typeGeneric - | StringLiteral - ; - -unionOrIntersectionOrPrimaryType - : unionOrIntersectionOrPrimaryType '|' unionOrIntersectionOrPrimaryType #Union - | unionOrIntersectionOrPrimaryType '&' unionOrIntersectionOrPrimaryType #Intersection - | primaryType #Primary - ; - -primaryType - : '(' type_ ')' #ParenthesizedPrimType - | predefinedType #PredefinedPrimType - | typeReference #ReferencePrimType - | objectType #ObjectPrimType - | primaryType {p.notLineTerminator()}? '[' ']' #ArrayPrimType - | '[' tupleElementTypes ']' #TuplePrimType - | typeQuery #QueryPrimType - | This #ThisPrimType - | typeReference Is primaryType #RedefinitionOfType - ; - -predefinedType - : ANY - | NUMBER - | BOOLEAN - | STRING - | SYMBOL - | Void - ; - -typeReference - : typeName ( typeIncludeGeneric | typeGeneric)? - ; - -// I tried recursive include, but it's not working. -// typeGeneric -// : '<' typeArgumentList typeGeneric?'>' -// ; -// -// TODO: Fix recursive -// -typeGeneric - : '<' typeArgumentList '>' - ; - -typeIncludeGeneric - :'<' typeArgumentList '<' typeArgumentList ('>' bindingPattern '>' | '>>') - ; - -typeName - : Identifier - | namespaceName - ; - -objectType - : '{' typeBody? '}' - ; - -typeBody - : typeMemberList (SemiColon | ',')? - ; - -typeMemberList - : typeMember ((SemiColon | ',') typeMember)* - ; - -typeMember - : propertySignature - | callSignature - | constructSignature - | indexSignature - | methodSignature ('=>' type_)? - ; - -arrayType - : primaryType {p.notLineTerminator()}? '[' ']' - ; - -tupleType - : '[' tupleElementTypes ']' - ; - -tupleElementTypes - : type_ (',' type_)* - ; - -functionType - : typeParameters? '(' parameterList? ')' '=>' type_ - ; - -constructorType - : 'new' typeParameters? '(' parameterList? ')' '=>' type_ - ; - -typeQuery - : 'typeof' typeQueryExpression - ; - -typeQueryExpression - : Identifier - | (identifierName '.')+ identifierName - ; - -propertySignature - : ReadOnly? propertyName '?'? typeAnnotation? ('=>' type_)? - ; - -typeAnnotation - : ':' type_ - ; - -callSignature - : typeParameters? '(' parameterList? ')' typeAnnotation? - ; - -parameterList - : restParameter - | predefinedType (',' predefinedType)* - | optionalParameterList (',' restParameter)? - | requiredParameterList (',' (optionalParameterList (',' restParameter)? | restParameter))? - ; - -requiredParameterList - : requiredParameter (',' requiredParameter)* - ; - -requiredParameter - : decoratorList? accessibilityModifier? identifierOrPattern typeAnnotation? - ; - -accessibilityModifier - : Public - | Private - | Protected - ; - -identifierOrPattern - : identifierName - | bindingPattern - ; - -optionalParameterList - : optionalParameter (',' optionalParameter)* - ; - -optionalParameter - : decoratorList? ( accessibilityModifier? identifierOrPattern ('?' typeAnnotation? | typeAnnotation? initializer)) - ; - -// todo: align typescript grammers -restParameter - : '...' requiredParameter - | '...' singleExpression - ; - -constructSignature - : 'new' typeParameters? '(' parameterList? ')' typeAnnotation? - ; - -indexSignature - : '[' Identifier ':' (NUMBER|STRING) ']' typeAnnotation - ; - -methodSignature - : propertyName '?'? callSignature - ; - -typeAliasDeclaration - : 'type' Identifier typeParameters? '=' type_ SemiColon - ; - -constructorDeclaration - : accessibilityModifier? Constructor '(' formalParameterList? ')' ( ('{' functionBody '}') | SemiColon)? - ; - -// A.5 Interface - -interfaceDeclaration - : Export? Interface Identifier typeParameters? interfaceExtendsClause? objectType SemiColon? - ; - -interfaceExtendsClause - : Extends classOrInterfaceTypeList - ; - -classOrInterfaceTypeList - : typeReference (',' typeReference)* - ; - -// A.7 Interface - -enumDeclaration - : Const? Enum Identifier '{' enumBody? '}' - ; - -enumBody - : enumMemberList ','? - ; - -enumMemberList - : enumMember (',' enumMember)* - ; - -enumMember - : propertyName ('=' singleExpression)? - ; - -// A.8 Namespaces - -namespaceDeclaration - : Namespace namespaceName '{' statementList? '}' - ; - -namespaceName - : Identifier ('.'+ Identifier)* - ; - -importAliasDeclaration - : Identifier '=' namespaceName SemiColon - | Identifier '=' 'require' '(' StringLiteral ')' SemiColon - ; - -importAll - : StringLiteral - ; - -// Ext.2 Additions to 1.8: Decorators - -decoratorList - : decorator+ ; - -decorator - : '@' (decoratorMemberExpression | decoratorCallExpression) - ; - -decoratorMemberExpression - : Identifier - | decoratorMemberExpression '.' identifierName - | '(' singleExpression ')' - ; - -decoratorCallExpression - : decoratorMemberExpression arguments; - -// ECMAPart -program - : sourceElements? EOF - ; - -sourceElement - : Export? statement - ; - -statement - : block - | variableStatement - | importStatement - | exportStatement - | emptyStatement_ - | abstractDeclaration //ADDED - | classDeclaration - | interfaceDeclaration //ADDED - | namespaceDeclaration //ADDED - | ifStatement - | iterationStatement - | continueStatement - | breakStatement - | returnStatement - | yieldStatement - | withStatement - | labelledStatement - | switchStatement - | throwStatement - | tryStatement - | debuggerStatement - | functionDeclaration - | arrowFunctionDeclaration - | generatorFunctionDeclaration - | typeAliasDeclaration //ADDED - | enumDeclaration //ADDED - | expressionStatement - | Export statement - ; - -block - : '{' statementList? '}' - ; - -statementList - : statement+ - ; - -abstractDeclaration - : Abstract (Identifier callSignature | variableStatement) eos - ; - -importStatement - : Import (importFromBlock | importAliasDeclaration | importAll) eos - ; - -importFromBlock - : (Dollar | Lodash | Multiply | multipleImportStatement | identifierName) (As identifierName)? From StringLiteral - ; - -multipleImportStatement - : (identifierName ',')? '{' identifierName (',' identifierName)* '}' - ; - -exportStatement - : Export Default? (importFromBlock | statement) - ; - -variableStatement - : bindingPattern typeAnnotation? initializer SemiColon? - | accessibilityModifier? varModifier? ReadOnly? variableDeclarationList SemiColon? - ; - -variableDeclarationList - : variableDeclaration (',' variableDeclaration)* - ; - -variableDeclaration - : assignable typeAnnotation? singleExpression? ('=' typeParameters? singleExpression)? // ECMAScript 6: Array & Object Matching - ; - -emptyStatement_ - : SemiColon - ; - -expressionStatement - : {p.notOpenBraceAndNotFunction()}? expressionSequence SemiColon? - ; - -ifStatement - : If '(' expressionSequence ')' statement (Else statement)? - ; - - -iterationStatement - : Do statement While '(' expressionSequence ')' eos # DoStatement - | While '(' expressionSequence ')' statement # WhileStatement - | For '(' expressionSequence? SemiColon expressionSequence? SemiColon expressionSequence? ')' statement # ForStatement - | For '(' varModifier variableDeclarationList SemiColon expressionSequence? SemiColon expressionSequence? ')' -statement # ForVarStatement - | For Await? '(' singleExpression (In | Identifier{p.p("of")}?) expressionSequence ')' statement # ForInStatement - | For Await? '(' varModifier variableDeclaration (In | Identifier{p.p("of")}?) expressionSequence ')' statement # ForVarInStatement - // strange, 'of' is an identifier. and p.p("of") not work in sometime. - ; - -varModifier - : Var - | Let - | Const - ; - -continueStatement - : Continue ({p.notLineTerminator()}? Identifier)? eos - ; - -breakStatement - : Break ({p.notLineTerminator()}? Identifier)? eos - ; - -returnStatement - : Return ({p.notLineTerminator()}? expressionSequence)? eos - ; - -yieldStatement - : Yield ({p.notLineTerminator()}? expressionSequence)? eos - ; - -withStatement - : With '(' expressionSequence ')' statement - ; - -switchStatement - : Switch '(' expressionSequence ')' caseBlock - ; - -caseBlock - : '{' caseClauses? (defaultClause caseClauses?)? '}' - ; - -caseClauses - : caseClause+ - ; - -caseClause - : Case expressionSequence ':' statementList? - ; - -defaultClause - : Default ':' statementList? - ; - -labelledStatement - : Identifier ':' statement - ; - -throwStatement - : Throw {p.notLineTerminator()}? expressionSequence eos - ; - -tryStatement - : Try block (catchProduction finallyProduction? | finallyProduction) - ; - -catchProduction - : Catch ('(' assignable? ')')? block - ; - -assignable - : Identifier - | arrayLiteral - | objectLiteral - ; - -finallyProduction - : Finally block - ; - -debuggerStatement - : Debugger eos - ; - -functionDeclaration - : Async? Function '*'? Identifier callSignature ( ('{' functionBody '}') | SemiColon) - ; - -//Ovveride ECMA -classDeclaration - : Abstract? Class Identifier typeParameters? classHeritage classTail - ; - -classHeritage - : classExtendsClause? implementsClause? - ; - -classTail - : '{' classElement* '}' - ; - -classExtendsClause - : Extends typeReference - ; - -implementsClause - : Implements classOrInterfaceTypeList - ; - -// Classes modified -classElement - : constructorDeclaration - | propertyMemberDeclaration - | indexMemberDeclaration - | statement - ; - -propertyMemberDeclaration - : propertyMemberBase '*'? '#'? propertyName typeAnnotation? initializer? SemiColon - | propertyMemberBase '*'? '#'? propertyName callSignature ( ('{' functionBody '}') | SemiColon) - | propertyMemberBase '*'? '#'? (getAccessor | setAccessor) - | abstractDeclaration - ; - -propertyMemberBase - : Async? accessibilityModifier? Static? ReadOnly? - ; - -indexMemberDeclaration - : indexSignature SemiColon - ; - -generatorMethod - : '*'? Identifier '(' formalParameterList? ')' '{' functionBody '}' - ; - -generatorFunctionDeclaration - : Function '*' Identifier? '(' formalParameterList? ')' '{' functionBody '}' - ; - -generatorBlock - : '{' generatorDefinition (',' generatorDefinition)* ','? '}' - ; - -generatorDefinition - : '*' iteratorDefinition - ; - -iteratorBlock - : '{' iteratorDefinition (',' iteratorDefinition)* ','? '}' - ; - -iteratorDefinition - : '[' singleExpression ']' '(' formalParameterList? ')' '{' functionBody '}' - ; - -formalParameterList - : formalParameterArg (',' formalParameterArg)* (',' lastFormalParameterArg)? - | lastFormalParameterArg - | arrayLiteral // ECMAScript 6: Parameter Context Matching - | objectLiteral (':' formalParameterList)? // ECMAScript 6: Parameter Context Matching - ; - -formalParameterArg - : accessibilityModifier? Identifier typeAnnotation? ('=' singleExpression)? // ECMAScript 6: Initialization - ; - -lastFormalParameterArg // ECMAScript 6: Rest Parameter - : Ellipsis Identifier - ; - -functionBody - : sourceElements? - ; - -sourceElements - : sourceElement+ - ; - -arrayLiteral - : ('[' elementList? ']') - ; - -elementList - : singleExpression (','+ singleExpression)* (','+ lastElement)? - | lastElement - ; - -lastElement // ECMAScript 6: Spread Operator - : Ellipsis (Identifier | singleExpression) - ; - -objectLiteral - : '{' (propertyAssignment (',' propertyAssignment)*)? ','? '}' - ; - -// MODIFIED -propertyAssignment - : propertyName (':' |'=') singleExpression # PropertyExpressionAssignment - | '[' singleExpression ']' ':' singleExpression # ComputedPropertyExpressionAssignment - | Async? '*'? propertyName '(' formalParameterList? ')' '{' functionBody '}' # FunctionProperty - | getAccessor # PropertyGetter - | setAccessor # PropertySetter - | generatorMethod # MethodProperty - | Identifier # PropertyShorthand - | restParameter # RestParameterInObject - ; - -getAccessor - : getter '(' ')' typeAnnotation? '{' functionBody '}' - ; - -setAccessor - : setter '(' ( Identifier | bindingPattern) typeAnnotation? ')' '{' functionBody '}' - ; - -propertyName - : identifierName - | StringLiteral - | numericLiteral - | '[' singleExpression ']' - ; - -arguments - : '('(singleExpression (',' singleExpression)* (',' lastArgument)? | lastArgument)?')' - ; - -lastArgument // ECMAScript 6: Spread Operator - : Ellipsis Identifier - ; - -expressionSequence - : singleExpression (',' singleExpression)* ','? - ; - -functionExpressionDeclaration - : Async? Function Identifier? '(' formalParameterList? ')' typeAnnotation? '{' functionBody '}' - ; - -singleExpression - : functionExpressionDeclaration # FunctionExpression - | arrowFunctionDeclaration # ArrowFunctionExpression // ECMAScript 6 - | Class Identifier? classTail # ClassExpression - | singleExpression '[' expressionSequence ']' # MemberIndexExpression - | singleExpression '?'? '.' '#'? identifierName # MemberDotExpression - | singleExpression arguments # ArgumentsExpression - | New singleExpression typeArguments? arguments? # NewExpression - | singleExpression {p.notLineTerminator()}? '++' # PostIncrementExpression - | singleExpression {p.notLineTerminator()}? '--' # PostDecreaseExpression - | Delete singleExpression # DeleteExpression - | Void singleExpression # VoidExpression - | Typeof singleExpression # TypeofExpression - | '++' singleExpression # PreIncrementExpression - | '--' singleExpression # PreDecreaseExpression - | '+' singleExpression # UnaryPlusExpression - | '-' singleExpression # UnaryMinusExpression - | '~' singleExpression # BitNotExpression - | '!' singleExpression # NotExpression - | Await singleExpression # AwaitExpression - | singleExpression '**' singleExpression # PowerExpression - | singleExpression ('*' | '/' | '%') singleExpression # MultiplicativeExpression - | singleExpression ('+' | '-') singleExpression # AdditiveExpression - | singleExpression ('<<' | '>>' | '>>>') singleExpression # BitShiftExpression - | singleExpression ('<' | '>' | '<=' | '>=') singleExpression # RelationalExpression - | singleExpression Instanceof singleExpression # InstanceofExpression - | singleExpression In singleExpression # InExpression - | singleExpression ('==' | '!=' | '===' | '!==') singleExpression # EqualityExpression - | singleExpression '&' singleExpression # BitAndExpression - | singleExpression '^' singleExpression # BitXOrExpression - | singleExpression '|' singleExpression # BitOrExpression - | singleExpression '&&' singleExpression # LogicalAndExpression - | singleExpression '||' singleExpression # LogicalOrExpression - | singleExpression '?' singleExpression ':' singleExpression # TernaryExpression - | singleExpression '??' singleExpression # CoalesceExpression - | singleExpression '=' singleExpression # AssignmentExpression - | singleExpression assignmentOperator singleExpression # AssignmentOperatorExpression - | singleExpression TemplateStringLiteral # TemplateStringExpression // ECMAScript 6 - | iteratorBlock # IteratorsExpression // ECMAScript 6 - | generatorBlock # GeneratorsExpression // ECMAScript 6 - | generatorFunctionDeclaration # GeneratorsFunctionExpression // ECMAScript 6 - | yieldStatement # YieldExpression // ECMAScript 6 - | This # ThisExpression - | identifierName singleExpression? # IdentifierExpression - | Super # SuperExpression - | literal # LiteralExpression - | arrayLiteral # ArrayLiteralExpression - | objectLiteral # ObjectLiteralExpression - | '(' expressionSequence ')' # ParenthesizedExpression - | typeArguments expressionSequence? # GenericTypes - ; - -arrowFunctionDeclaration - : Async? arrowFunctionParameters typeAnnotation? '=>' arrowFunctionBody - ; - -arrowFunctionParameters - : Identifier - | '(' formalParameterList? ')' - ; - -arrowFunctionBody - : singleExpression - | '{' functionBody '}' - ; - -assignmentOperator - : '*=' - | '/=' - | '%=' - | '+=' - | '-=' - | '<<=' - | '>>=' - | '>>>=' - | '&=' - | '^=' - | '|=' - | '**=' - ; - -literal - : NullLiteral - | BooleanLiteral - | StringLiteral - | TemplateStringLiteral - | RegularExpressionLiteral - | numericLiteral - ; - -numericLiteral - : DecimalLiteral - | HexIntegerLiteral - | OctalIntegerLiteral - | OctalIntegerLiteral2 - | BinaryIntegerLiteral - ; - -identifierName - : Identifier - | reservedWord - ; - -reservedWord - : keyword - | NullLiteral - | BooleanLiteral - ; - -keyword - : Break - | Do - | Instanceof - | Typeof - | Case - | Else - | New - | Var - | Catch - | Finally - | Return - | Void - | Continue - | For - | Switch - | While - | Debugger - | Function - | This - | With - | Default - | If - | Throw - | Delete - | In - | Try - | ReadOnly - | Async - | From - - | Class - | Enum - | Extends - | Super - | Const - | Export - | Import - | Implements - | Let - | Private - | Public - | Interface - | Package - | Protected - | Static - | Yield - | Await - | From - | As - ; - -getter - : Identifier{p.p("get")}? propertyName - ; - -setter - : Identifier{p.p("set")}? propertyName - ; - -eos - : SemiColon - | EOF - | {p.lineTerminatorAhead()}? - | {p.closeBrace()}? - ; \ No newline at end of file diff --git a/pkg/application/analysis/tsapp/ts_ident_app.go b/pkg/application/analysis/tsapp/ts_ident_app.go deleted file mode 100644 index cd8d2821..00000000 --- a/pkg/application/analysis/tsapp/ts_ident_app.go +++ /dev/null @@ -1,44 +0,0 @@ -package tsapp - -import ( - "github.com/antlr/antlr4/runtime/Go/antlr/v4" - parser "github.com/modernizing/coca/languages/ts" - "github.com/modernizing/coca/pkg/domain/core_domain" - "github.com/modernizing/coca/pkg/infrastructure/ast/ast_typescript" -) - -func processStream(is antlr.CharStream) *parser.TypeScriptParser { - lexer := parser.NewTypeScriptLexer(is) - stream := antlr.NewCommonTokenStream(lexer, 0) - return parser.NewTypeScriptParser(stream) -} - -func ProcessTsString(code string) *parser.TypeScriptParser { - is := antlr.NewInputStream(code) - return processStream(is) -} - -type TypeScriptIdentApp struct { -} - -func (t *TypeScriptIdentApp) AnalysisPackageManager(path string) core_domain.CodePackageInfo { - return core_domain.CodePackageInfo{} -} - -func (t *TypeScriptIdentApp) Analysis(code string, fileName string) core_domain.CodeContainer { - scriptParser := ProcessTsString(code) - context := scriptParser.Program() - - listener := ast_typescript.NewTypeScriptIdentListener(fileName) - antlr.NewParseTreeWalker().Walk(listener, context) - - return listener.GetNodeInfo() -} - -func (t *TypeScriptIdentApp) SetExtensions(extension interface{}) { - -} - -func (t *TypeScriptIdentApp) IdentAnalysis(s string, file string) []core_domain.CodeMember { - return nil -} diff --git a/pkg/application/analysis/tsapp/ts_ident_app_regression_test.go b/pkg/application/analysis/tsapp/ts_ident_app_regression_test.go deleted file mode 100644 index ffc8a0a1..00000000 --- a/pkg/application/analysis/tsapp/ts_ident_app_regression_test.go +++ /dev/null @@ -1,30 +0,0 @@ -package tsapp - -import ( - . "github.com/onsi/gomega" - "io/ioutil" - "testing" -) - -//func Test_Regression(t *testing.T) { -// g := NewGomegaWithT(t) -// -// app := new(TypeScriptIdentApp) -// code, _ := ioutil.ReadFile("../../../../_fixtures/ts/regressions/import_comma_issue.ts") -// -// results := app.Analysis(string(code), "") -// -// g.Expect(len(results.Imports)).To(Equal(3)) -//} - -// todo: ignore this test for fast CI -func Test_ProcessErrorGrammar(t *testing.T) { - g := NewGomegaWithT(t) - - app := new(TypeScriptIdentApp) - code, _ := ioutil.ReadFile("../../../../../_fixtures/ts/regressions/callback_hell.ts") - - results := app.Analysis(string(code), "") - - g.Expect(len(results.Members)).To(Equal(0)) -} diff --git a/pkg/application/analysis/tsapp/ts_ident_app_test.go b/pkg/application/analysis/tsapp/ts_ident_app_test.go deleted file mode 100644 index 17ae273d..00000000 --- a/pkg/application/analysis/tsapp/ts_ident_app_test.go +++ /dev/null @@ -1,243 +0,0 @@ -package tsapp - -import ( - . "github.com/onsi/gomega" - "io/ioutil" - "testing" -) - -func Test_TypeScriptClassNode(t *testing.T) { - g := NewGomegaWithT(t) - - app := new(TypeScriptIdentApp) - codefile := app.Analysis(` -interface IPerson { - name: string; -} - -class Person implements IPerson { - public publicString: string; - private privateString: string; - protected protectedString: string; - readonly readonlyString: string; - name: string; - - constructor(name: string) { - this.name = name; - } -} -`, "") - - g.Expect(codefile.DataStructures[0].NodeName).To(Equal("IPerson")) - g.Expect(codefile.DataStructures[1].NodeName).To(Equal("Person")) - g.Expect(codefile.DataStructures[1].Functions[0].Name).To(Equal("constructor")) - g.Expect(codefile.DataStructures[1].Implements[0]).To(Equal("IPerson")) -} - -func Test_TypeScriptMultipleClass(t *testing.T) { - t.Parallel() - g := NewGomegaWithT(t) - - app := new(TypeScriptIdentApp) - code, _ := ioutil.ReadFile("../../../../_fixtures/ts/grammar/Class.ts") - - codeFile := app.Analysis(string(code), "") - - g.Expect(len(codeFile.DataStructures)).To(Equal(4)) - g.Expect(len(codeFile.DataStructures[1].Implements)).To(Equal(1)) - g.Expect(codeFile.DataStructures[1].Implements[0]).To(Equal("IPerson")) -} - -func Test_TypeScriptAbstractClass(t *testing.T) { - t.Parallel() - g := NewGomegaWithT(t) - - app := new(TypeScriptIdentApp) - code, _ := ioutil.ReadFile("../../../../_fixtures/ts/grammar/AbstractClass.ts") - - codeFile := app.Analysis(string(code), "") - - g.Expect(len(codeFile.DataStructures)).To(Equal(3)) - g.Expect(codeFile.DataStructures[0].Type).To(Equal("Class")) - g.Expect(codeFile.DataStructures[1].NodeName).To(Equal("Employee")) - g.Expect(codeFile.DataStructures[1].Extend).To(Equal("Person")) -} - -func Test_ShouldGetClassFromModule(t *testing.T) { - t.Parallel() - g := NewGomegaWithT(t) - - app := new(TypeScriptIdentApp) - code, _ := ioutil.ReadFile("../../../../_fixtures/ts/grammar/Module.ts") - - results := app.Analysis(string(code), "") - - g.Expect(len(results.DataStructures)).To(Equal(1)) - g.Expect(results.DataStructures[0].NodeName).To(Equal("Employee")) -} - -func Test_ShouldEnableGetClassMethod(t *testing.T) { - t.Parallel() - g := NewGomegaWithT(t) - - app := new(TypeScriptIdentApp) - - codefile := app.Analysis(` -class Employee { - displayName():void { - console.log("hello, world"); - } -} -`, "") - - g.Expect(len(codefile.DataStructures[0].Functions)).To(Equal(1)) -} - -func Test_ShouldGetInterfaceImplements(t *testing.T) { - t.Parallel() - g := NewGomegaWithT(t) - - app := new(TypeScriptIdentApp) - - results := app.Analysis(` -export interface IPerson { - name: string; - gender: string; -} - -interface IEmployee extends IPerson{ - empCode: number; - readonly empName: string; - empDept?:string; - getSalary: (number) => number; // arrow function - getManagerName(number): string; -} -`, "") - - g.Expect(results.DataStructures[1].Extend).To(Equal("IPerson")) -} - -func Test_ShouldGetInterfaceProperty(t *testing.T) { - t.Parallel() - g := NewGomegaWithT(t) - - app := new(TypeScriptIdentApp) - codeFile := app.Analysis(` -export interface IPerson { - name: string; - gender: string; - getSalary: (number) => number; - getManagerName(number): string; -} -`, "") - - firstDataStruct := codeFile.DataStructures[0] - - g.Expect(len(firstDataStruct.Fields)).To(Equal(2)) - g.Expect(len(firstDataStruct.Functions)).To(Equal(2)) - - firstMethod := firstDataStruct.Functions[0] - secondMethod := firstDataStruct.Functions[1] - - g.Expect(firstMethod.Name).To(Equal("getSalary")) - g.Expect(secondMethod.Name).To(Equal("getManagerName")) - g.Expect(secondMethod.Parameters[0].TypeType).To(Equal("number")) -} - -func Test_ShouldGetDefaultFunctionName(t *testing.T) { - t.Parallel() - g := NewGomegaWithT(t) - - app := new(TypeScriptIdentApp) - - codeFile := app.Analysis(` -function Sum(x: number, y: number) : void { - console.log('processNumKeyPairs: key = ' + key + ', value = ' + value) - return x + y; -} -`, "") - - ds := codeFile.DataStructures - - firstFunction := ds[0].Functions[0] - params := firstFunction.Parameters - g.Expect(firstFunction.MultipleReturns[0].TypeType).To(Equal("void")) - g.Expect(len(params)).To(Equal(2)) - g.Expect(params[0].TypeValue).To(Equal("x")) - g.Expect(params[0].TypeType).To(Equal("number")) -} - -func Test_ShouldHandleRestParameters(t *testing.T) { - t.Parallel() - g := NewGomegaWithT(t) - - app := new(TypeScriptIdentApp) - - codeFile := app.Analysis(` -function buildName(firstName: string, ...restOfName: string[]) { - return firstName + " " + restOfName.join(" "); -} -`, "") - - firstFunction:= codeFile.DataStructures[0].Functions[0] - params := firstFunction.Parameters - g.Expect(len(params)).To(Equal(2)) - g.Expect(params[0].TypeValue).To(Equal("firstName")) - g.Expect(params[1].TypeValue).To(Equal("restOfName")) -} - -func Test_ShouldGetClassFields(t *testing.T) { - t.Parallel() - g := NewGomegaWithT(t) - - app := new(TypeScriptIdentApp) - code, _ := ioutil.ReadFile("../../../../_fixtures/ts/grammar/Class.ts") - - codeFile := app.Analysis(string(code), "") - - codeFields := codeFile.DataStructures[1].Fields - g.Expect(len(codeFields)).To(Equal(5)) - g.Expect(codeFields[0].Modifiers[0]).To(Equal("public")) -} - -func Test_ShouldReturnBlockImports(t *testing.T) { - t.Parallel() - g := NewGomegaWithT(t) - - app := new(TypeScriptIdentApp) - - results := app.Analysis(` -import { ZipCodeValidator } from "./ZipCodeValidator"; - -`, "") - - g.Expect(len(results.Imports)).To(Equal(1)) - g.Expect(results.Imports[0].Source).To(Equal("./ZipCodeValidator")) -} - -func Test_ShouldReturnAsImports(t *testing.T) { - t.Parallel() - g := NewGomegaWithT(t) - - app := new(TypeScriptIdentApp) - - results := app.Analysis(` -import zip = require("./ZipCodeValidator"); -`, "") - - g.Expect(len(results.Imports)).To(Equal(1)) - - g.Expect(results.Imports[0].Source).To(Equal("./ZipCodeValidator")) -} - -// Todo: fix for $ and * -func Test_ShouldReturnAllImports(t *testing.T) { - t.Parallel() - g := NewGomegaWithT(t) - - app := new(TypeScriptIdentApp) - code, _ := ioutil.ReadFile("../../../../_fixtures/ts/grammar/Import.ts") - results := app.Analysis(string(code), "") - - g.Expect(len(results.Imports)).To(Equal(5)) -} diff --git a/pkg/infrastructure/ast/ast_typescript/typescript_ident_converter.go b/pkg/infrastructure/ast/ast_typescript/typescript_ident_converter.go deleted file mode 100644 index 933c2a57..00000000 --- a/pkg/infrastructure/ast/ast_typescript/typescript_ident_converter.go +++ /dev/null @@ -1,112 +0,0 @@ -package ast_typescript - -import ( - "github.com/antlr/antlr4/runtime/Go/antlr/v4" - "github.com/modernizing/coca/languages/ts" - "github.com/modernizing/coca/pkg/domain/core_domain" - "github.com/modernizing/coca/pkg/infrastructure/ast/astutil" -) - -func BuildConstructorMethod(ctx *parser.ConstructorDeclarationContext) *core_domain.CodeFunction { - function := &core_domain.CodeFunction{ - Name: "constructor", - } - - astutil.AddFunctionPosition(function, ctx.GetChild(0).GetParent().(*antlr.BaseParserRuleContext)) - - if ctx.AccessibilityModifier() != nil { - modifier := ctx.AccessibilityModifier().GetText() - - function.Modifiers = append(function.Modifiers, modifier) - } - - return function -} - -func BuildMemberMethod(ctx *parser.PropertyMemberDeclarationContext) *core_domain.CodeFunction { - function := &core_domain.CodeFunction{ - Name: ctx.PropertyName().GetText(), - } - function.Position.StartLine = ctx.GetStart().GetLine() - function.Position.StartLinePosition = ctx.GetStart().GetColumn() - function.Position.StopLine = ctx.GetStop().GetLine() - function.Position.StopLinePosition = ctx.GetStop().GetColumn() - - return function -} - -func BuildImplements(typeList parser.IClassOrInterfaceTypeListContext) []string { - typeListContext := typeList.(*parser.ClassOrInterfaceTypeListContext) - - var implements []string = nil - for _, typeType := range typeListContext.AllTypeReference() { - typeRefs := typeType.(*parser.TypeReferenceContext).TypeName().GetText() - implements = append(implements, typeRefs) - } - - return implements -} - -func BuildMethodParameter(context *parser.ParameterListContext) []core_domain.CodeProperty { - childNode := context.GetChild(0) - var parameters []core_domain.CodeProperty = nil - - switch x := childNode.(type) { - case *parser.RequiredParameterListContext: - listContext := x - - properties := buildRequireParameterList(listContext) - parameters = append(parameters, properties...) - - if context.RestParameter() != nil { - restParamCtx := context.RestParameter().(*parser.RestParameterContext) - codeProperty := buildRestParameters(restParamCtx) - - parameters = append(parameters, codeProperty) - } - case *parser.PredefinedTypeContext: - predefinedTypeContext := x - parameter := core_domain.CodeProperty{ - TypeValue: "any", - TypeType: predefinedTypeContext.GetText(), - } - parameters = append(parameters, parameter) - } - - return parameters -} - -func buildRestParameters(ctx *parser.RestParameterContext) core_domain.CodeProperty { - context := ctx.GetChild(1).(*parser.RequiredParameterContext) - return buildRequiredParameter(context) -} - -func buildRequireParameterList(listContext *parser.RequiredParameterListContext) []core_domain.CodeProperty { - var requireCodeParams []core_domain.CodeProperty = nil - - for _, requiredParameter := range listContext.AllRequiredParameter() { - paramCtx := requiredParameter.(*parser.RequiredParameterContext) - property := buildRequiredParameter(paramCtx) - - requireCodeParams = append(requireCodeParams, property) - } - return requireCodeParams -} - -func buildRequiredParameter(paramCtx *parser.RequiredParameterContext) core_domain.CodeProperty { - paramType := "" - if paramCtx.TypeAnnotation() != nil { - annotationContext := paramCtx.TypeAnnotation().(*parser.TypeAnnotationContext) - paramType = BuildTypeAnnotation(annotationContext) - } - parameter := core_domain.CodeProperty{ - TypeValue: paramCtx.IdentifierOrPattern().GetText(), - TypeType: paramType, - } - - return parameter -} - -func BuildTypeAnnotation(annotationContext *parser.TypeAnnotationContext) string { - return annotationContext.Type_().GetText() -} diff --git a/pkg/infrastructure/ast/ast_typescript/typescript_ident_listener.go b/pkg/infrastructure/ast/ast_typescript/typescript_ident_listener.go deleted file mode 100644 index 9fd0d86a..00000000 --- a/pkg/infrastructure/ast/ast_typescript/typescript_ident_listener.go +++ /dev/null @@ -1,257 +0,0 @@ -package ast_typescript - -import ( - "github.com/antlr/antlr4/runtime/Go/antlr/v4" - parser "github.com/modernizing/coca/languages/ts" - "github.com/modernizing/coca/pkg/domain/core_domain" - "github.com/modernizing/coca/pkg/infrastructure/ast/astutil" - "strings" -) - -var defaultClass = "default" - -type TypeScriptIdentListener struct { - currentDataStruct *core_domain.CodeDataStruct - dataStructures []core_domain.CodeDataStruct - dataStructQueue []core_domain.CodeDataStruct - filePath string - codeFile core_domain.CodeContainer - - parser.BaseTypeScriptParserListener -} - -func NewTypeScriptIdentListener(fileName string) *TypeScriptIdentListener { - listener := &TypeScriptIdentListener{} - listener.filePath = fileName - return listener -} - -func (s *TypeScriptIdentListener) GetNodeInfo() core_domain.CodeContainer { - isScriptCalls := s.currentDataStruct != nil && s.currentDataStruct.IsNotEmpty() - if isScriptCalls { - if len(s.currentDataStruct.Functions) < 1 { - function := &core_domain.CodeFunction{} - function.Name = "default" - function.FunctionCalls = append(function.FunctionCalls, s.currentDataStruct.FunctionCalls...) - - s.currentDataStruct.Functions = append(s.currentDataStruct.Functions, *function) - } - - s.dataStructures = append(s.dataStructures, *s.currentDataStruct) - } - - s.codeFile.DataStructures = s.dataStructures - return s.codeFile -} - -func (s *TypeScriptIdentListener) EnterImportFromBlock(ctx *parser.ImportFromBlockContext) { - replaceSingleQuote := UpdateImportStr(ctx.StringLiteral().GetText()) - imp := &core_domain.CodeImport{Source: replaceSingleQuote} - importName := ctx.GetChild(0).(antlr.ParseTree).GetText() - imp.ImportName = importName - s.codeFile.Imports = append(s.codeFile.Imports, *imp) -} - -func UpdateImportStr(importText string) string { - replaceDoubleQuote := strings.ReplaceAll(importText, "\"", "") - replaceSingleQuote := strings.ReplaceAll(replaceDoubleQuote, "'", "") - return replaceSingleQuote -} - -func (s *TypeScriptIdentListener) EnterImportAliasDeclaration(ctx *parser.ImportAliasDeclarationContext) { - replaceSingleQuote := UpdateImportStr(ctx.StringLiteral().GetText()) - imp := &core_domain.CodeImport{Source: replaceSingleQuote} - s.codeFile.Imports = append(s.codeFile.Imports, *imp) -} - -func (s *TypeScriptIdentListener) EnterImportAll(ctx *parser.ImportAllContext) { - replaceSingleQuote := UpdateImportStr(ctx.StringLiteral().GetText()) - imp := &core_domain.CodeImport{Source: replaceSingleQuote} - s.codeFile.Imports = append(s.codeFile.Imports, *imp) -} - -func (s *TypeScriptIdentListener) EnterInterfaceDeclaration(ctx *parser.InterfaceDeclarationContext) { - s.currentDataStruct = &core_domain.CodeDataStruct{ - Type: "Interface", - NodeName: ctx.Identifier().GetText(), - } - - if ctx.InterfaceExtendsClause() != nil { - extendsContext := ctx.InterfaceExtendsClause().(*parser.InterfaceExtendsClauseContext) - elements := BuildImplements(extendsContext.ClassOrInterfaceTypeList()) - s.currentDataStruct.Extend = elements[0] - } - - objectTypeCtx := ctx.ObjectType().(*parser.ObjectTypeContext) - if objectTypeCtx.TypeBody() != nil { - bodyCtx := objectTypeCtx.TypeBody().(*parser.TypeBodyContext) - typeMemberListCtx := bodyCtx.TypeMemberList().(*parser.TypeMemberListContext) - - BuildInterfaceTypeBody(typeMemberListCtx, s.currentDataStruct) - } -} - -func BuildInterfaceTypeBody(ctx *parser.TypeMemberListContext, dataStruct *core_domain.CodeDataStruct) { - for _, typeMember := range ctx.AllTypeMember() { - typeMemberCtx := typeMember.(*parser.TypeMemberContext) - memberChild := typeMemberCtx.GetChild(0) - switch x := memberChild.(type) { - case *parser.PropertySignatureContext: - BuildInterfacePropertySignature(x, dataStruct) - case *parser.MethodSignatureContext: - function := core_domain.CodeFunction{ - Name: x.PropertyName().GetText(), - } - - FillMethodFromCallSignature(x.CallSignature().(*parser.CallSignatureContext), &function) - - dataStruct.Functions = append(dataStruct.Functions, function) - } - } -} - -func BuildInterfacePropertySignature(signatureCtx *parser.PropertySignatureContext, dataStruct *core_domain.CodeDataStruct) { - typeType := BuildTypeAnnotation(signatureCtx.TypeAnnotation().(*parser.TypeAnnotationContext)) - typeValue := signatureCtx.PropertyName().(*parser.PropertyNameContext).GetText() - - isArrowFunc := signatureCtx.Type_() != nil - if isArrowFunc { - function := &core_domain.CodeFunction{ - Name: typeValue, - } - param := core_domain.CodeProperty{ - TypeValue: "any", - TypeType: typeType, - } - - returnType := core_domain.CodeProperty{ - TypeType: signatureCtx.Type_().GetText(), - } - function.Parameters = append(function.Parameters, param) - function.MultipleReturns = append(function.MultipleReturns, returnType) - - dataStruct.Functions = append(dataStruct.Functions, *function) - } else { - codeField := &core_domain.CodeField{} - codeField.TypeType = typeType - codeField.TypeValue = typeValue - - dataStruct.Fields = append(dataStruct.Fields, *codeField) - } -} - -func (s *TypeScriptIdentListener) ExitInterfaceDeclaration(ctx *parser.InterfaceDeclarationContext) { - s.exitClass() -} - -func (s *TypeScriptIdentListener) EnterClassDeclaration(ctx *parser.ClassDeclarationContext) { - s.currentDataStruct = &core_domain.CodeDataStruct{ - Type: "Class", - NodeName: ctx.Identifier().GetText(), - } - - heritageContext := ctx.ClassHeritage().(*parser.ClassHeritageContext) - if heritageContext.ImplementsClause() != nil { - typeList := heritageContext.ImplementsClause().(*parser.ImplementsClauseContext).ClassOrInterfaceTypeList() - - implements := BuildImplements(typeList) - s.currentDataStruct.Implements = implements - } - - if heritageContext.ClassExtendsClause() != nil { - referenceContext := heritageContext.ClassExtendsClause().(*parser.ClassExtendsClauseContext).TypeReference().(*parser.TypeReferenceContext) - - s.currentDataStruct.Extend = referenceContext.TypeName().GetText() - } - - classTailContext := ctx.ClassTail().(*parser.ClassTailContext) - s.handleClassBodyElements(classTailContext) - - s.dataStructQueue = append(s.dataStructQueue, *s.currentDataStruct) -} - -func (s *TypeScriptIdentListener) handleClassBodyElements(classTailContext *parser.ClassTailContext) { - for _, classElement := range classTailContext.AllClassElement() { - elementChild := classElement.GetChild(0) - switch x := elementChild.(type) { - case *parser.ConstructorDeclarationContext: - codeFunction := BuildConstructorMethod(x) - - s.currentDataStruct.Functions = append(s.currentDataStruct.Functions, *codeFunction) - case *parser.PropertyMemberDeclarationContext: - s.HandlePropertyMember(x, s.currentDataStruct) - } - } -} - -func (s *TypeScriptIdentListener) HandlePropertyMember(propertyMemberCtx *parser.PropertyMemberDeclarationContext, dataStruct *core_domain.CodeDataStruct) { - callSignatureSizePos := 3 - if propertyMemberCtx.PropertyName() != nil { - modifier := propertyMemberCtx.PropertyMemberBase().GetText() - codeField := core_domain.CodeField{ - TypeValue: propertyMemberCtx.PropertyName().GetText(), - } - codeField.Modifiers = append(codeField.Modifiers, modifier) - if propertyMemberCtx.TypeAnnotation() != nil { - codeField.TypeType = BuildTypeAnnotation(propertyMemberCtx.TypeAnnotation().(*parser.TypeAnnotationContext)) - } - - dataStruct.Fields = append(dataStruct.Fields, codeField) - } - - if propertyMemberCtx.GetChildCount() >= callSignatureSizePos { - callSignCtxPos := 2 - switch propertyMemberCtx.GetChild(callSignCtxPos).(type) { - case *parser.CallSignatureContext: - memberFunction := BuildMemberMethod(propertyMemberCtx) - dataStruct.Functions = append(dataStruct.Functions, *memberFunction) - } - } -} - -func (s *TypeScriptIdentListener) ExitClassDeclaration(ctx *parser.ClassDeclarationContext) { - s.exitClass() -} - -func (s *TypeScriptIdentListener) exitClass() { - s.dataStructures = append(s.dataStructures, *s.currentDataStruct) - if len(s.dataStructQueue) > 1 { - s.dataStructQueue = s.dataStructQueue[0 : len(s.dataStructQueue)-1] - s.currentDataStruct = &s.dataStructQueue[len(s.dataStructQueue)-1] - } else { - s.currentDataStruct = core_domain.NewDataStruct() - } -} - -func (s *TypeScriptIdentListener) EnterFunctionDeclaration(ctx *parser.FunctionDeclarationContext) { - function := &core_domain.CodeFunction{ - Name: ctx.Identifier().GetText(), - } - - callSignatureContext := ctx.CallSignature().(*parser.CallSignatureContext) - FillMethodFromCallSignature(callSignatureContext, function) - - astutil.AddFunctionPosition(function, ctx.GetChild(0).GetParent().(*antlr.BaseParserRuleContext)) - - if s.currentDataStruct == nil { - s.currentDataStruct = &core_domain.CodeDataStruct{} - } - s.currentDataStruct.Functions = append(s.currentDataStruct.Functions, *function) -} - -func FillMethodFromCallSignature(callSignatureContext *parser.CallSignatureContext, function *core_domain.CodeFunction) { - if callSignatureContext.ParameterList() != nil { - parameterListContext := callSignatureContext.ParameterList().(*parser.ParameterListContext) - functionParameters := BuildMethodParameter(parameterListContext) - - function.Parameters = append(function.Parameters, functionParameters...) - } - - if callSignatureContext.TypeAnnotation() != nil { - annotationContext := callSignatureContext.TypeAnnotation().(*parser.TypeAnnotationContext) - typeAnnotation := BuildTypeAnnotation(annotationContext) - - returnType := function.BuildSingleReturnType(typeAnnotation) - function.MultipleReturns = append(function.MultipleReturns, *returnType) - } -} diff --git a/scripts/compile-antlr.sh b/scripts/compile-antlr.sh index 068ba45f..15f30dce 100755 --- a/scripts/compile-antlr.sh +++ b/scripts/compile-antlr.sh @@ -13,8 +13,6 @@ antlr -Dlanguage=Go -listener GroovyParser.g4 -o ../groovy antlr -Dlanguage=Go -listener JavaScriptLexer.g4 -o ../js antlr -Dlanguage=Go -listener JavaScriptParser.g4 -o ../js -antlr -Dlanguage=Go -listener TypeScriptLexer.g4 -o ../ts -antlr -Dlanguage=Go -listener TypeScriptParser.g4 -o ../ts #antlr -Dlanguage=Go -listener GoLexer.g4 -o ../go #antlr -Dlanguage=Go -listener GoParser.g4 -o ../go