summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lexer.mll8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/lexer.mll b/src/lexer.mll
index 3538d5cb..7508abfc 100644
--- a/src/lexer.mll
+++ b/src/lexer.mll
@@ -193,8 +193,14 @@ let alphanum = letter|digit
let startident = letter|'_'
let ident = alphanum|['_''\'''#']
let tyvar_start = '\''
+(* Ensure an operator cannot start with comment openings *)
let oper_char = ['!''%''&''*''+''-''.''/'':''<''=''>''@''^''|']
-let operator = (oper_char+ ('_' ident)?)
+let oper_char_no_slash = ['!''%''&''*''+''-''.'':''<''=''>''@''^''|']
+let oper_char_no_slash_star = ['!''%''&''+''-''.'':''<''=''>''@''^''|']
+let operator1 = oper_char
+let operator2 = oper_char oper_char_no_slash_star | oper_char_no_slash oper_char
+let operatorn = oper_char oper_char_no_slash_star (oper_char* ('_' ident)?) | oper_char_no_slash oper_char (oper_char* ('_' ident)?) | oper_char ('_' ident)?
+let operator = operator1 | operator2 | operatorn
let escape_sequence = ('\\' ['\\''\"''\'''n''t''b''r']) | ('\\' digit digit digit) | ('\\' 'x' hexdigit hexdigit)
let lchar = [^'\n']