diff options
| author | Alasdair Armstrong | 2018-02-06 17:31:16 +0000 |
|---|---|---|
| committer | Alasdair Armstrong | 2018-02-06 17:33:28 +0000 |
| commit | c719cba2428ccca3eb8646176cd9da7795deb029 (patch) | |
| tree | f0baf08da022bcd283519b409cd8248ffb28d6c2 /src | |
| parent | a994afb16a99ea2d1e19311f4d75021bc7dabcd5 (diff) | |
Fix lexer so operators cannot start with /* or //
Diffstat (limited to 'src')
| -rw-r--r-- | src/lexer.mll | 8 |
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'] |
