main.swift 1.35 KiB
//
//  memri-parser
//
//  Copyright © 2020 Memri. All rights reserved.
//
import Foundation
let topic = "view" // "all" | "view" | "expression"
// TODO: Create syntax highlighter for xcode:
//       https://github.com/erica/TypeScript-xclangspec/blob/master/TypeScript.xclangspec
if topic == "view" {
    let fileURL = URL(string: "file:///Users/rubendaniels/Development/memri-parser/memri-parser/view-parser/example/example.view")
    let code = try String(contentsOf: fileURL!, encoding: String.Encoding.utf8)
    let dt = Date()
    let viewDef = ViewDefinitionParser(code,
        lookup: { lookup in return 10 },
        execFunc: { lookup, args in return 20 })
    let definitions = try viewDef.parse()
    print (Date().timeIntervalSince(dt))
    print(definitions)
else if topic == "expression" || topic == "all" {
    print("ADD TEST FOR ESCAPING { in startInStringMode")
    let code = """
    !(test + -5.63537) or 4/3 ? variable.func() : me.address[primary = true].country ? ((4+5 * 10) + test[10]) : 'asdads\\'asdad' + ''
    """
    let dt = Date()
    let expr = Expression(code,
                          startInStringMode: false,
                          lookup: { lookup in return 10 },
                          execFunc: { lookup, args in return 20 })
    print(try expr.execute() ?? "nil")
    print (Date().timeIntervalSince(dt))