aboutsummaryrefslogtreecommitdiff
path: root/frontend/scanner.icl
diff options
context:
space:
mode:
authoralimarin2001-03-13 15:36:49 +0000
committeralimarin2001-03-13 15:36:49 +0000
commitc3a2cdaad45d3e1536d3b98d89036e549f159530 (patch)
tree03e6e689e81bca56ad245ff00fc9c17a7bef80b5 /frontend/scanner.icl
parentadded 2.0 syntax to type_io.icl (diff)
Generics are added, but are disabled.
Tested with compiling Object IO and butstrapping. git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@329 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'frontend/scanner.icl')
-rw-r--r--frontend/scanner.icl18
1 files changed, 17 insertions, 1 deletions
diff --git a/frontend/scanner.icl b/frontend/scanner.icl
index d0f3fe7..9ff470f 100644
--- a/frontend/scanner.icl
+++ b/frontend/scanner.icl
@@ -185,6 +185,11 @@ where
| EndOfFileToken // end of file
| ErrorToken String // an error has occured
+ | GenericToken // generic
+ | GenericOpenToken // {|
+ | GenericCloseToken // |}
+
+
:: Context
= GeneralContext
| TypeContext
@@ -565,13 +570,21 @@ Scan :: !Char !Input !Context -> (!Token, !Input)
Scan '(' input co = (OpenToken, input)
Scan ')' input co = (CloseToken, input)
Scan '{' input CodeContext = ScanCodeBlock input
-Scan '{' input co = (CurlyOpenToken, input)
+//Scan '{' input co = (CurlyOpenToken, input)
+// AA ...
+Scan c0=:'{' input co
+ # (eof, c1, input) = ReadNormalChar input
+ | eof = (CurlyOpenToken, input)
+ | c1 == '|' = (GenericOpenToken, input)
+ = (CurlyOpenToken, charBack input)
+// ... AA
Scan '}' input co = (CurlyCloseToken, input)
Scan '[' input co = (SquareOpenToken, input)
Scan ']' input co = (SquareCloseToken, input)
Scan c0=:'|' input co
# (eof, c1, input) = ReadNormalChar input
| eof = (BarToken, input)
+ | c1 == '}' = (GenericCloseToken, input) // AA
| isSpecialChar c1 = ScanOperator 1 input [c1, c0] co
= (BarToken, charBack input)
Scan ',' input co = (CommaToken, input)
@@ -765,6 +778,7 @@ CheckEveryContext s input
"with" -> (WithToken , input)
"class" -> (ClassToken , input)
"instance" -> (InstanceToken , input)
+ "generic" -> (GenericToken , input)
"otherwise" -> (OtherwiseToken , input)
"!" -> (ExclamationToken , input)
// "::" -> (DoubleColonToken , input)
@@ -1522,6 +1536,8 @@ where
toString CurlyCloseToken = "}"
toString SquareOpenToken = "["
toString SquareCloseToken = "]"
+ toString GenericOpenToken = "{|"
+ toString GenericCloseToken = "|}"
toString DotToken = "."
toString SemicolonToken = ";"
toString ColonToken = ": (ColonToken)"