From c719cba2428ccca3eb8646176cd9da7795deb029 Mon Sep 17 00:00:00 2001 From: Alasdair Armstrong Date: Tue, 6 Feb 2018 17:31:16 +0000 Subject: Fix lexer so operators cannot start with /* or // --- src/lexer.mll | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src') 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'] -- cgit v1.2.3