diff --git a/src/frontend/parser.nim b/src/frontend/parser.nim index 03eaaf3..516a011 100644 --- a/src/frontend/parser.nim +++ b/src/frontend/parser.nim @@ -688,7 +688,7 @@ proc forEachStmt(self: Parser): Statement = self.currentLoop = enclosingLoop -proc parse*(self: Parser, tokens: seq[Token], file: string, lines: seq[tuple[start, stop: int]], source: string): seq[Declaration] +proc parse*(self: Parser, tokens: seq[Token], file: string, lines: seq[tuple[start, stop: int]], source: string, persist: bool = false): seq[Declaration] proc findOperators(self: Parser, tokens: seq[Token]) @@ -1250,7 +1250,7 @@ proc findOperators(self: Parser, tokens: seq[Token]) = self.error("invalid state: found malformed tokenizer input while looking for operators (missing EOF)", token) -proc parse*(self: Parser, tokens: seq[Token], file: string, lines: seq[tuple[start, stop: int]], source: string): seq[Declaration] = +proc parse*(self: Parser, tokens: seq[Token], file: string, lines: seq[tuple[start, stop: int]], source: string, persist: bool = false): seq[Declaration] = ## Parses a sequence of tokens into a sequence of AST nodes self.tokens = tokens self.file = file @@ -1258,7 +1258,8 @@ proc parse*(self: Parser, tokens: seq[Token], file: string, lines: seq[tuple[sta self.currentLoop = LoopContext.None self.currentFunction = nil self.scopeDepth = 0 - self.operators = newOperatorTable() + if not persist: + self.operators = newOperatorTable() self.tree = @[] self.source = source self.lines = lines diff --git a/tests/a.pn b/tests/a.pn new file mode 100644 index 0000000..195ad48 --- /dev/null +++ b/tests/a.pn @@ -0,0 +1,4 @@ +import std; +import b; + +print("a"); diff --git a/tests/b.pn b/tests/b.pn new file mode 100644 index 0000000..1807405 --- /dev/null +++ b/tests/b.pn @@ -0,0 +1,3 @@ +import std; + +print("b");