Mercurial > projects > dil
changeset 35:c470b9356e35
- Added code for parsing Unordered, UorE, UorG, UorGorE, UorL, UorLorE, NotEqual and Not tokens.
author | aziz |
---|---|
date | Tue, 26 Jun 2007 07:57:00 +0000 |
parents | 41dad4aef4b1 |
children | 3c7210a722f7 |
files | trunk/src/Lexer.d trunk/src/Token.d trunk/src/main.d |
diffstat | 3 files changed, 60 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/trunk/src/Lexer.d Mon Jun 25 19:05:01 2007 +0000 +++ b/trunk/src/Lexer.d Tue Jun 26 07:57:00 2007 +0000 @@ -390,6 +390,47 @@ switch(c) { + case '!': + c = *++p; + switch (c) + { + case '<': + c = *++p; + if (c == '>') + { + if (p[1] == '=') { + ++p; + t.type = TOK.Unordered; + } + else + t.type = TOK.UorE; + } + else if (c == '=') + { + t.type = TOK.UorG; + } + else { + t.type = TOK.UorGorE; + goto Lcommon2; + } + goto Lcommon; + case '>': + if (p[1] == '=') + { + ++p; + t.type = TOK.UorL; + } + else + t.type = TOK.UorLorE; + goto Lcommon; + case '=': + t.type = TOK.NotEqual; + goto Lcommon; + default: + t.type = TOK.Not; + goto Lcommon2; + } + assert(0); case '.': if (p[1] == '.') {
--- a/trunk/src/Token.d Mon Jun 25 19:05:01 2007 +0000 +++ b/trunk/src/Token.d Tue Jun 26 07:57:00 2007 +0000 @@ -27,7 +27,14 @@ Dot, Slice, Ellipses, - Assign, Equal, + Unordered, + UorE, + UorG, + UorGorE, + UorL, + UorLorE, + + Assign, Equal, NotEqual, Not, OrAssign, OrLogical, OrBinary, AndAssign, AndLogical, AndBinary, PlusAssign, PlusPlus, Plus,
--- a/trunk/src/main.d Mon Jun 25 19:05:01 2007 +0000 +++ b/trunk/src/main.d Tue Jun 26 07:57:00 2007 +0000 @@ -52,7 +52,7 @@ case TOK.Character: writef("<cl>%s</cl>", span); break; - case TOK.Assign, TOK.Equal, + case TOK.Assign, TOK.Equal, TOK.Not, TOK.OrAssign, TOK.OrBinary, TOK.AndAssign, TOK.AndBinary, TOK.PlusAssign, TOK.PlusPlus, TOK.Plus, @@ -61,7 +61,13 @@ TOK.MulAssign, TOK.Mul, TOK.ModAssign, TOK.Mod, TOK.XorAssign, TOK.Xor, - TOK.CatAssign, TOK.Catenate: + TOK.CatAssign, TOK.Catenate, + TOK.Unordered, + TOK.UorE, + TOK.UorG, + TOK.UorGorE, + TOK.UorL, + TOK.UorLorE: writef("<op>%s</op>", span); break; case TOK.AndLogical: @@ -70,9 +76,9 @@ case TOK.OrLogical: writef("<op>∨</op>"); break; -// case TOK.NotEqual: -// writef("<op>≠</op>"); -// break; + case TOK.NotEqual: + writef("<op>≠</op>"); + break; case TOK.Number: writef("<n>%s</n>", span); break;