1. 16 Feb, 2015 1 commit
    • Kim Nguyễn's avatar
      Fix the handling of polymorphic variables in the lexer. The solution · 36b83c45
      Kim Nguyễn authored
      to use two lexers (depending on whether we are between square brackets
      or not) is too brittle (it crudely tries to parse
       ``( [whitespace] 'a  [whitespace] )'' as a variable, to force the user
      to write the variable beetween parenthesis. However this does not scale
      to types with two arguments (says [ t ('a, 'b) ]).
      We use a simpler heuristic (with look ahead)
      (1) try to see if the regular expression
      ' (anything but ', \n)* '(anything but the first letter of an identifier)
      can be found. If so, we put back the lexeme in the buffer and parse it as as
      a string.
      (2) if (1) failed, try to parse it as a variable
      (3) if (3) failed, try to parse it again as a string. We are
      guaranteed to fail here but it means we have a malformed string, so we
      parse as a string to get a proper error message.
      The only thing this does not cover are cases like
      type t = [ 'abcd'Int ]
      which was tokenized before as [, 'abcd', Int, ]
      and is now tokenized as [, 'abcd, 'Int, ]
      It does not seem to be a problem in practice though (since in the code
      I have seen thus far, people were at least putting a space).
      it is easy to emmit a warning in this case, suggesting the user to add
      a whitespace to get the old behaviour back.
  2. 12 Sep, 2014 1 commit
  3. 09 Sep, 2014 1 commit
    • Pietro Abate's avatar
      New syntax for parametric types · f1235de1
      Pietro Abate authored
      now we can write types as
      type t( 'a) = <a>'a
      and patterns can contain type instantiations
      let f = fun (t('a) -> [ t('a)* ]) x -> [ x ];;
      let id = fun (t(Int) -> [ t(Int)* ]) x -> [ x ];;
      Note: parametric types must be written as "IDENT(" without space.
  4. 27 Jun, 2014 1 commit
    • Julien Lopez's avatar
      We don't need parentheses for type variables in regexp anymore, the syntax is · 9b94eb11
      Julien Lopez authored
      now as such:
      	- ['a] is the regexp matching the type variable "a";
      	- ['a'] is the regexp matching the string "a";
      	- ['a' 'a] is the regexp matching the string "a" followed by the type
      	variable "a";
      	- ['a''a] is a syntax error (a string in single quotes in a regexp MUST
      	be followed by a character that cannot be the beginning of a name for a
      	type variable, a blank character will do).
      Bug: At this point, when using CDuce at toplevel, one will have to press enter
      twice when typing a regexp with type variables.
  5. 19 Jun, 2014 4 commits
  6. 05 Oct, 2007 4 commits
  7. 10 Jul, 2007 3 commits