diff --git a/hsrc/Syntax/Lexer.x b/hsrc/Syntax/Lexer.x index d97838c..1c0fe45 100644 --- a/hsrc/Syntax/Lexer.x +++ b/hsrc/Syntax/Lexer.x @@ -21,7 +21,7 @@ $bindigit = [01] $typestart = [A-Z\_] $valstart = [a-z\_] $identrest = [a-zA-Z0-9\_\.] -$opident = [\~\!\@\#\$\%\^\&\*\+\-\=\.\<\>\?\_] +$opident = [\~\!\@\#\$\%\^\&\*\+\-\=\.\<\>\?\_\|] $escape_char = [abfnrtv'\"\\] :- @@ -58,7 +58,6 @@ $escape_char = [abfnrtv'\"\\] "]" { emitT RSquare } "{" { emitT LBrace } "}" { emitT RBrace } - "|" { emitT Bar } ";" { emitT Semi } "," { emitT Comma } "`" { emitT BTick } diff --git a/hsrc/Syntax/Parser.y b/hsrc/Syntax/Parser.y index 4b7913f..7ca799f 100644 --- a/hsrc/Syntax/Parser.y +++ b/hsrc/Syntax/Parser.y @@ -35,6 +35,7 @@ import qualified Codec.Binary.UTF8.Generic as UTF8 -- symbols '=' { Lexeme $$ (TokOpIdent "=") } + '|' { Lexeme $$ (TokOpIdent "|") } '->' { Lexeme $$ (TokOpIdent "->") } '@' { Lexeme $$ (TokOpIdent "@") } '::' { Lexeme $$ (TokOpIdent "::") } @@ -45,7 +46,6 @@ import qualified Codec.Binary.UTF8.Generic as UTF8 ']' { Lexeme $$ RSquare } '{' { Lexeme $$ LBrace } '}' { Lexeme $$ RBrace } - '|' { Lexeme $$ Bar } ';' { Lexeme $$ Semi } ',' { Lexeme $$ Comma } '`' { Lexeme $$ BTick } @@ -229,6 +229,7 @@ optional_type :: { Maybe Type } value_ident :: { QualifiedName } : VAL_IDENT { makeQualified $1 } | '(' OP_IDENT ')' { makeQualified $2 } + | '(' '|' ')' { makeQualified (Lexeme $2 (TokOpIdent "|")) } value_body :: { (Position, Expr Position) } : '=' expression { ($1, $2) }