From 9c810311198097257a44d64bb35fbe1100f1b2ca Mon Sep 17 00:00:00 2001 From: Juanjo Alvarez Date: Tue, 29 Aug 2017 15:13:33 +0200 Subject: [PATCH 1/2] Use the SDK's skeleton ParserBuilder and set ToNoder.PositionFill --- driver/normalizer/parser.go | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/driver/normalizer/parser.go b/driver/normalizer/parser.go index b36e363..0fd84a6 100644 --- a/driver/normalizer/parser.go +++ b/driver/normalizer/parser.go @@ -13,6 +13,7 @@ var ToNoder = &native.ObjectToNoder{ EndLineKey: "endLine", EndColumnKey: "endColumn", EndOffsetKey: "endPosition", + PositionFill: native.None, //TODO: Should this be part of the UAST rules? TokenKeys: map[string]bool{ @@ -31,10 +32,25 @@ var ToNoder = &native.ObjectToNoder{ } // ParserBuilder creates a parser that transform source code files into *uast.Node. -func ParserBuilder(opts driver.ParserOptions) (driver.Parser, error) { - parser, err := native.ExecParser(ToNoder, opts.NativeBin) +func ParserBuilder(opts driver.ParserOptions) (parser driver.Parser, err error) { + psr, err := native.ExecParser(ToNoder, opts.NativeBin) if err != nil { - return nil, err + return psr, err + } + + switch ToNoder.PositionFill { + case native.None: + parser = psr + case native.OffsetFromLineCol: + parser = &driver.TransformationParser{ + Parser: psr, + Transformation: driver.FillOffsetFromLineCol, + } + case native.LineColFromOffset: + parser = &driver.TransformationParser{ + Parser: psr, + Transformation: driver.FillLineColFromOffset, + } } return parser, nil From 3d4a7cdf584a3199b0eec35733a1c947c6d48402 Mon Sep 17 00:00:00 2001 From: Juanjo Alvarez Date: Tue, 29 Aug 2017 18:54:35 +0200 Subject: [PATCH 2/2] Update to latest sdk skel --- driver/normalizer/parser.go | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/driver/normalizer/parser.go b/driver/normalizer/parser.go index 0fd84a6..72d0686 100644 --- a/driver/normalizer/parser.go +++ b/driver/normalizer/parser.go @@ -33,25 +33,23 @@ var ToNoder = &native.ObjectToNoder{ // ParserBuilder creates a parser that transform source code files into *uast.Node. func ParserBuilder(opts driver.ParserOptions) (parser driver.Parser, err error) { - psr, err := native.ExecParser(ToNoder, opts.NativeBin) + parser, err = native.ExecParser(ToNoder, opts.NativeBin) if err != nil { - return psr, err + return } switch ToNoder.PositionFill { - case native.None: - parser = psr case native.OffsetFromLineCol: parser = &driver.TransformationParser{ - Parser: psr, + Parser: parser, Transformation: driver.FillOffsetFromLineCol, } case native.LineColFromOffset: parser = &driver.TransformationParser{ - Parser: psr, + Parser: parser, Transformation: driver.FillLineColFromOffset, } } - return parser, nil + return }