aboutsummaryrefslogtreecommitdiff
path: root/src/comp/front/lexer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/comp/front/lexer.rs')
-rw-r--r--src/comp/front/lexer.rs147
1 files changed, 1 insertions, 146 deletions
diff --git a/src/comp/front/lexer.rs b/src/comp/front/lexer.rs
index f01d782a..6f93234f 100644
--- a/src/comp/front/lexer.rs
+++ b/src/comp/front/lexer.rs
@@ -22,8 +22,6 @@ state type reader = state obj {
fn add_str(str) -> token::str_num;
fn get_str(token::str_num) -> str;
fn get_chpos() -> uint;
- fn get_keywords() -> hashmap[str,token::token];
- fn get_reserved() -> hashmap[str,()];
fn get_filemap() -> codemap::filemap;
fn err(str m);
};
@@ -39,8 +37,6 @@ fn new_reader(session sess, io::reader rdr,
mutable uint mark_chpos,
mutable uint chpos,
mutable vec[str] strs,
- hashmap[str,token::token] keywords,
- hashmap[str,()] reserved,
codemap::filemap fm) {
fn is_eof() -> bool {
@@ -82,10 +78,6 @@ fn new_reader(session sess, io::reader rdr,
}
}
- fn get_keywords() -> hashmap[str,token::token] {
- ret keywords;
- }
-
fn add_str(str s) -> token::str_num {
strs += vec(s);
ret _vec::len[str](strs) - 1u;
@@ -95,10 +87,6 @@ fn new_reader(session sess, io::reader rdr,
ret strs.(i);
}
- fn get_reserved() -> hashmap[str,()] {
- ret reserved;
- }
-
fn get_filemap() -> codemap::filemap {
ret fm;
}
@@ -111,133 +99,11 @@ fn new_reader(session sess, io::reader rdr,
let vec[str] strs = vec();
auto rd = reader(sess, file, _str::byte_len(file), 0u, -1 as char,
filemap.start_pos, filemap.start_pos,
- strs, keyword_table(),
- reserved_word_table(),
- filemap);
+ strs, filemap);
rd.init();
ret rd;
}
-fn keyword_table() -> std::map::hashmap[str, token::token] {
- auto keywords = new_str_hash[token::token]();
-
- keywords.insert("mod", token::MOD);
- keywords.insert("use", token::USE);
- keywords.insert("meta", token::META);
- keywords.insert("auth", token::AUTH);
-
- keywords.insert("syntax", token::SYNTAX);
-
- keywords.insert("if", token::IF);
- keywords.insert("else", token::ELSE);
- keywords.insert("while", token::WHILE);
- keywords.insert("do", token::DO);
- keywords.insert("alt", token::ALT);
- keywords.insert("case", token::CASE);
-
- keywords.insert("for", token::FOR);
- keywords.insert("each", token::EACH);
- keywords.insert("break", token::BREAK);
- keywords.insert("cont", token::CONT);
- keywords.insert("put", token::PUT);
- keywords.insert("ret", token::RET);
- keywords.insert("be", token::BE);
-
- keywords.insert("fail", token::FAIL);
- keywords.insert("drop", token::DROP);
-
- keywords.insert("type", token::TYPE);
- keywords.insert("check", token::CHECK);
- keywords.insert("assert", token::ASSERT);
- keywords.insert("claim", token::CLAIM);
- keywords.insert("prove", token::PROVE);
-
- keywords.insert("state", token::STATE);
- keywords.insert("gc", token::GC);
-
- keywords.insert("unsafe", token::UNSAFE);
-
- keywords.insert("native", token::NATIVE);
- keywords.insert("mutable", token::MUTABLE);
- keywords.insert("auto", token::AUTO);
-
- keywords.insert("fn", token::FN);
- keywords.insert("pred", token::PRED);
- keywords.insert("iter", token::ITER);
-
- keywords.insert("import", token::IMPORT);
- keywords.insert("export", token::EXPORT);
-
- keywords.insert("let", token::LET);
- keywords.insert("const", token::CONST);
-
- keywords.insert("log", token::LOG);
- keywords.insert("log_err", token::LOG_ERR);
- keywords.insert("spawn", token::SPAWN);
- keywords.insert("thread", token::THREAD);
- keywords.insert("yield", token::YIELD);
- keywords.insert("join", token::JOIN);
-
- keywords.insert("bool", token::BOOL);
-
- keywords.insert("int", token::INT);
- keywords.insert("uint", token::UINT);
- keywords.insert("float", token::FLOAT);
-
- keywords.insert("char", token::CHAR);
- keywords.insert("str", token::STR);
-
-
- keywords.insert("rec", token::REC);
- keywords.insert("tup", token::TUP);
- keywords.insert("tag", token::TAG);
- keywords.insert("vec", token::VEC);
- keywords.insert("any", token::ANY);
-
- keywords.insert("obj", token::OBJ);
- keywords.insert("self", token::SELF);
-
- keywords.insert("port", token::PORT);
- keywords.insert("chan", token::CHAN);
-
- keywords.insert("task", token::TASK);
-
- keywords.insert("true", token::LIT_BOOL(true));
- keywords.insert("false", token::LIT_BOOL(false));
-
- keywords.insert("in", token::IN);
-
- keywords.insert("as", token::AS);
- keywords.insert("with", token::WITH);
-
- keywords.insert("bind", token::BIND);
-
- keywords.insert("u8", token::MACH(common::ty_u8));
- keywords.insert("u16", token::MACH(common::ty_u16));
- keywords.insert("u32", token::MACH(common::ty_u32));
- keywords.insert("u64", token::MACH(common::ty_u64));
- keywords.insert("i8", token::MACH(common::ty_i8));
- keywords.insert("i16", token::MACH(common::ty_i16));
- keywords.insert("i32", token::MACH(common::ty_i32));
- keywords.insert("i64", token::MACH(common::ty_i64));
- keywords.insert("f32", token::MACH(common::ty_f32));
- keywords.insert("f64", token::MACH(common::ty_f64));
-
- ret keywords;
-}
-
-fn reserved_word_table() -> std::map::hashmap[str, ()] {
- auto reserved = new_str_hash[()]();
- reserved.insert("f16", ()); // IEEE 754-2008 'binary16' interchange fmt
- reserved.insert("f80", ()); // IEEE 754-1985 'extended'
- reserved.insert("f128", ()); // IEEE 754-2008 'binary128'
- reserved.insert("m32", ()); // IEEE 754-2008 'decimal32'
- reserved.insert("m64", ()); // IEEE 754-2008 'decimal64'
- reserved.insert("m128", ()); // IEEE 754-2008 'decimal128'
- reserved.insert("dec", ()); // One of m32, m64, m128
- ret reserved;
-}
-
fn in_range(char c, char lo, char hi) -> bool {
ret lo <= c && c <= hi;
}
@@ -604,17 +470,6 @@ fn next_token(reader rdr) -> token::token {
ret token::UNDERSCORE;
}
- auto kwds = rdr.get_keywords();
- if (kwds.contains_key(accum_str)) {
- ret kwds.get(accum_str);
- }
-
- auto rsvd = rdr.get_reserved();
- if (rsvd.contains_key(accum_str)) {
- rdr.err(#fmt("reserved keyword: %s", accum_str));
- fail;
- }
-
ret token::IDENT(rdr.add_str(accum_str));
}