diff --git a/lisa-utils/src/main/scala/lisa/utils/Parser.scala b/lisa-utils/src/main/scala/lisa/utils/Parser.scala index 7b6eda220c7b1141ddb8435289cecf9f3e6c7161..279590a9b4698ec8fcb67ddbaeab8595f56e0fc1 100644 --- a/lisa-utils/src/main/scala/lisa/utils/Parser.scala +++ b/lisa-utils/src/main/scala/lisa/utils/Parser.scala @@ -153,6 +153,7 @@ object Parser { // TODO: add positions ==> ranges to tokens type Position = Unit + private val allowedIdentifierCharacters = elem(_.isLetter) | elem(_.isDigit) | oneOf("_\\@#$%^&*><:|_+-=") private val schematicSymbol = "'" private val lexer = Lexer( @@ -174,11 +175,11 @@ object Parser { elem(';') |> SemicolonToken, elem('⊢') | word("|-") |> SequentToken, many1(whiteSpace) |> SpaceToken, - word(schematicSymbol) ~ many1(elem(_.isLetter) | elem('_') | elem(_.isDigit) | elem('\'')) |> { cs => + word(schematicSymbol) ~ many1(allowedIdentifierCharacters) |> { cs => // drop the ' SchematicToken(cs.drop(1).mkString) }, - many1(elem(_.isLetter) | elem('_') | elem(_.isDigit)) |> { cs => ConstantToken(cs.mkString) } + many1(allowedIdentifierCharacters) |> { cs => ConstantToken(cs.mkString) } ) onError { (cs, _) => throw ParserException(s"Unexpected input: ${cs.mkString}") }