From 1464b8e169e8bfcebc32dd877d1bd1bde0c0ad5c Mon Sep 17 00:00:00 2001 From: Christoph Schlosser Date: Tue, 20 Feb 2018 12:35:02 +0100 Subject: Introduce special handling for cast operator --- src/Lang/Cpp/CppParser.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/Lang') diff --git a/src/Lang/Cpp/CppParser.ts b/src/Lang/Cpp/CppParser.ts index fcbdbe0..de0ecc5 100644 --- a/src/Lang/Cpp/CppParser.ts +++ b/src/Lang/Cpp/CppParser.ts @@ -327,6 +327,12 @@ export default class CppParser implements ICodeParser { } private GetReturnAndArgs(line: string): [CppArgument, CppArgument[]] { + if (this.GetArgumentFromCastOperator(line) !== null) { + const opFunc = new CppArgument(); + opFunc.name = this.GetArgumentFromCastOperator(line)[1]; + opFunc.type.nodes.push(new CppToken(CppTokenType.Symbol, opFunc.name)); + return [opFunc, []]; + } // CppTokenize rest of expression and remove comment CppTokens; const CppTokens: CppToken[] = this.Tokenize(line) .filter((t) => t.type !== CppTokenType.CommentBlock) @@ -421,6 +427,11 @@ export default class CppParser implements ICodeParser { }); } + private GetArgumentFromCastOperator(line: string) { + const copy = line; + return copy.match("[explicit|\\s]*\\s*operator\\s*([a-zA-Z].*)\\(\\).*"); + } + private GetArgumentFromTrailingReturn(tree: CppParseTree, startTrailingReturn: number): CppArgument { const argument: CppArgument = new CppArgument(); -- cgit v1.2.3