diff options
Diffstat (limited to 'tests/destructor/tarc3.nim')
-rw-r--r-- | tests/destructor/tarc3.nim | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/tests/destructor/tarc3.nim b/tests/destructor/tarc3.nim new file mode 100644 index 000000000..55d0ea42d --- /dev/null +++ b/tests/destructor/tarc3.nim @@ -0,0 +1,101 @@ + +discard """ + cmd: '''nim c --gc:arc $file''' +""" + +when defined(cpp): + {.passC: "-std=gnu++2a".} + +type + TokenKind* = enum + tkColon + tkComma + tkString + tkNumber + tkInt64 + tkIdent + + Token* = object + case kind*: TokenKind + of tkString: strVal*: string + of tkNumber: numVal*: float + of tkInt64: int64Val*: int64 + of tkIdent: ident*: string + else: discard + pos*: Natural + + + Token2* = object + case kind*: TokenKind + of tkString: strVal*: string + of tkNumber: numVal*: float + of tkInt64, tkColon..tkComma: + str1*: array[2, string] + float: float + else: discard + pos*: Natural + + Token3* = object + case kind*: TokenKind + of tkNumber: numVal*: float + of tkInt64, tkComma..tkString: ff: seq[float] + else: str1*: string + + Token4* = object + case kind*: TokenKind + of tkNumber: numVal*: float + of tkInt64, tkComma..tkString: ff: seq[float] + else: str1*: string + case kind2*: TokenKind + of tkNumber: + numVal2*: float + intSeqVal3*: seq[int] + of tkInt64, tkComma..tkString: + case kind3*: TokenKind + of tkNumber: numVal3*: float + of tkInt64, tkComma..tkString: + ff3: seq[float] + ff5: string + else: + str3*: string + mysrq: seq[int] + else: + case kind4*: TokenKind + of tkNumber: numVal4*: float + of tkInt64, tkComma..tkString: ff4: seq[float] + else: str4*: string + + BaseLexer* = object of RootObj + input*: string + pos*: Natural + + Json5Lexer* = object of BaseLexer + + JsonLexer* = object of BaseLexer + allowComments*: bool + allowSpecialFloats*: bool + + Lexer* = Json5Lexer | JsonLexer + + Parser[T: Lexer] = object + l: T + tok: Token + tok2: Token2 + tok3: Token3 + tok4: Token4 + allowTrailingComma: bool + allowIdentifierObjectKey: bool + +proc initJson5Lexer*(input: string): Json5Lexer = + result.input = input + +proc parseJson5*(input: string) = + var p = Parser[Json5Lexer]( + l: initJson5Lexer(input), + allowTrailingComma: true, + allowIdentifierObjectKey: true + ) + + +let x = "string" +parseJson5(x) \ No newline at end of file |