summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRose Hogenson <rhogenson@posteo.net>2022-09-11 21:06:15 -0700
committerRose Hogenson <rhogenson@posteo.net>2022-09-11 21:06:15 -0700
commit86991830c05279583910758551a9c3974437623e (patch)
treef9f0ca2cb0d366045ce4b4473057e087cda9e527
parentAdd a smlnj compilation manager file. (diff)
downloadsml-86991830c05279583910758551a9c3974437623e.tar.zst
Fix a performance issues in parser.sml.
-rw-r--r--parser.sml6
1 files changed, 3 insertions, 3 deletions
diff --git a/parser.sml b/parser.sml
index 219b61f..af7ec76 100644
--- a/parser.sml
+++ b/parser.sml
@@ -77,12 +77,12 @@ struct
fun newState (fileName : string) (fileStream : TextIO.instream) : state =
State (TextIO.getInstream fileStream, newLoc fileName, makeUserState defaultInfixOperators)
- fun updateUserState (f : userState -> infixTable) (State (stream, loc, us) : state) : userState parserResponse =
- let val st' = makeUserState (f us)
+ fun updateUserState (f : userState -> userState) (State (stream, loc, us) : state) : userState parserResponse =
+ let val st' = f us
in (Empty, Either.Right (st', State (stream, loc, st'), Hints []))
end
- val getUserState : userState parser = updateUserState (fn (UserState (_, opTable)) => opTable)
+ val getUserState : userState parser = updateUserState (fn x => x)
fun runParser (p : 'a parser) (fileName : string) : (string, 'a) Either.either =
unpackParserResponse (p (newState fileName (TextIO.openIn fileName)))