Add an else to the case statement
This commit is contained in:
265
source.elna
265
source.elna
@ -518,138 +518,139 @@ begin
|
||||
while i < tokens_size do
|
||||
current_token := tokens + i;
|
||||
|
||||
if current_token^.kind = TokenKind._if then
|
||||
write_s("IF")
|
||||
elsif current_token^.kind = TokenKind._then then
|
||||
write_s("THEN")
|
||||
elsif current_token^.kind = TokenKind._else then
|
||||
write_s("ELSE")
|
||||
elsif current_token^.kind = TokenKind._elsif then
|
||||
write_s("ELSIF")
|
||||
elsif current_token^.kind = TokenKind._while then
|
||||
write_s("WHILE")
|
||||
elsif current_token^.kind = TokenKind._do then
|
||||
write_s("DO")
|
||||
elsif current_token^.kind = TokenKind._proc then
|
||||
write_s("PROC")
|
||||
elsif current_token^.kind = TokenKind._begin then
|
||||
write_s("BEGIN")
|
||||
elsif current_token^.kind = TokenKind._end then
|
||||
write_s("END")
|
||||
elsif current_token^.kind = TokenKind._extern then
|
||||
write_s("EXTERN")
|
||||
elsif current_token^.kind = TokenKind._const then
|
||||
write_s("CONST")
|
||||
elsif current_token^.kind = TokenKind._var then
|
||||
write_s("VAR")
|
||||
elsif current_token^.kind = TokenKind.array then
|
||||
write_s("ARRAY")
|
||||
elsif current_token^.kind = TokenKind._of then
|
||||
write_s("OF")
|
||||
elsif current_token^.kind = TokenKind._type then
|
||||
write_s("TYPE")
|
||||
elsif current_token^.kind = TokenKind._record then
|
||||
write_s("RECORD")
|
||||
elsif current_token^.kind = TokenKind._union then
|
||||
write_s("UNION")
|
||||
elsif current_token^.kind = TokenKind.pointer then
|
||||
write_s("POINTER")
|
||||
elsif current_token^.kind = TokenKind.to then
|
||||
write_s("TO")
|
||||
elsif current_token^.kind = TokenKind.boolean then
|
||||
write_s("BOOLEAN<");
|
||||
write_b(current_token^.value.boolean_value);
|
||||
write_c('>')
|
||||
elsif current_token^.kind = TokenKind._nil then
|
||||
write_s("NIL")
|
||||
elsif current_token^.kind = TokenKind.and then
|
||||
write_s("AND")
|
||||
elsif current_token^.kind = TokenKind._or then
|
||||
write_s("OR")
|
||||
elsif current_token^.kind = TokenKind.not then
|
||||
write_s("NOT")
|
||||
elsif current_token^.kind = TokenKind._return then
|
||||
write_s("RETURN")
|
||||
elsif current_token^.kind = TokenKind._cast then
|
||||
write_s("CAST")
|
||||
elsif current_token^.kind = TokenKind.shift_left then
|
||||
write_s("<<")
|
||||
elsif current_token^.kind = TokenKind.shift_right then
|
||||
write_s(">>")
|
||||
elsif current_token^.kind = TokenKind.identifier then
|
||||
write_c('<');
|
||||
write_s(current_token^.value.string);
|
||||
write_c('>')
|
||||
elsif current_token^.kind = TokenKind.left_paren then
|
||||
write_s("(")
|
||||
elsif current_token^.kind = TokenKind.right_paren then
|
||||
write_s(")")
|
||||
elsif current_token^.kind = TokenKind.left_square then
|
||||
write_s("[")
|
||||
elsif current_token^.kind = TokenKind.right_square then
|
||||
write_s("]")
|
||||
elsif current_token^.kind = TokenKind.greater_equal then
|
||||
write_s(">=")
|
||||
elsif current_token^.kind = TokenKind.less_equal then
|
||||
write_s("<=")
|
||||
elsif current_token^.kind = TokenKind.greater_than then
|
||||
write_s(">")
|
||||
elsif current_token^.kind = TokenKind.less_than then
|
||||
write_s("<")
|
||||
elsif current_token^.kind = TokenKind.equal then
|
||||
write_s("=")
|
||||
elsif current_token^.kind = TokenKind.not_equal then
|
||||
write_s("<>")
|
||||
elsif current_token^.kind = TokenKind.semicolon then
|
||||
write_c(';')
|
||||
elsif current_token^.kind = TokenKind.dot then
|
||||
write_c('.')
|
||||
elsif current_token^.kind = TokenKind.comma then
|
||||
write_c(',')
|
||||
elsif current_token^.kind = TokenKind.plus then
|
||||
write_c('+')
|
||||
elsif current_token^.kind = TokenKind.minus then
|
||||
write_c('-')
|
||||
elsif current_token^.kind = TokenKind.multiplication then
|
||||
write_c('*')
|
||||
elsif current_token^.kind = TokenKind.division then
|
||||
write_c('/')
|
||||
elsif current_token^.kind = TokenKind.remainder then
|
||||
write_c('%')
|
||||
elsif current_token^.kind = TokenKind.assignment then
|
||||
write_s(":=")
|
||||
elsif current_token^.kind = TokenKind.colon then
|
||||
write_c(':')
|
||||
elsif current_token^.kind = TokenKind.hat then
|
||||
write_c('^')
|
||||
elsif current_token^.kind = TokenKind.at then
|
||||
write_c('@')
|
||||
elsif current_token^.kind = TokenKind.comment then
|
||||
write_s("(* COMMENT *)")
|
||||
elsif current_token^.kind = TokenKind.integer then
|
||||
write_c('<');
|
||||
write_i(current_token^.value.int_value);
|
||||
write_c('>')
|
||||
elsif current_token^.kind = TokenKind.word then
|
||||
write_c('<');
|
||||
write_i(current_token^.value.int_value);
|
||||
write_s("u>")
|
||||
elsif current_token^.kind = TokenKind.character then
|
||||
write_c('<');
|
||||
write_i(cast(current_token^.value.char_value: Int));
|
||||
write_s("c>")
|
||||
elsif current_token^.kind = TokenKind.string then
|
||||
write_s("\"...\"")
|
||||
elsif current_token^.kind = TokenKind._defer then
|
||||
write_s("DEFER")
|
||||
elsif current_token^.kind = TokenKind.exclamation then
|
||||
write_c('!')
|
||||
elsif current_token^.kind = TokenKind.arrow then
|
||||
write_s("->")
|
||||
else
|
||||
write_s("UNKNOWN<");
|
||||
write_i(cast(current_token^.kind: Int));
|
||||
write_c('>')
|
||||
case current_token^.kind of
|
||||
TokenKind._if:
|
||||
write_s("IF")
|
||||
| TokenKind._then:
|
||||
write_s("THEN")
|
||||
| TokenKind._else:
|
||||
write_s("ELSE")
|
||||
| TokenKind._elsif:
|
||||
write_s("ELSIF")
|
||||
| TokenKind._while:
|
||||
write_s("WHILE")
|
||||
| TokenKind._do:
|
||||
write_s("DO")
|
||||
| TokenKind._proc:
|
||||
write_s("PROC")
|
||||
| TokenKind._begin:
|
||||
write_s("BEGIN")
|
||||
| TokenKind._end:
|
||||
write_s("END")
|
||||
| TokenKind._extern:
|
||||
write_s("EXTERN")
|
||||
| TokenKind._const:
|
||||
write_s("CONST")
|
||||
| TokenKind._var:
|
||||
write_s("VAR")
|
||||
| TokenKind.array:
|
||||
write_s("ARRAY")
|
||||
| TokenKind._of:
|
||||
write_s("OF")
|
||||
| TokenKind._type:
|
||||
write_s("TYPE")
|
||||
| TokenKind._record:
|
||||
write_s("RECORD")
|
||||
| TokenKind._union:
|
||||
write_s("UNION")
|
||||
| TokenKind.pointer:
|
||||
write_s("POINTER")
|
||||
| TokenKind.to:
|
||||
write_s("TO")
|
||||
| TokenKind.boolean:
|
||||
write_s("BOOLEAN<");
|
||||
write_b(current_token^.value.boolean_value);
|
||||
write_c('>')
|
||||
| TokenKind._nil:
|
||||
write_s("NIL")
|
||||
| TokenKind.and:
|
||||
write_s("AND")
|
||||
| TokenKind._or:
|
||||
write_s("OR")
|
||||
| TokenKind.not:
|
||||
write_s("NOT")
|
||||
| TokenKind._return:
|
||||
write_s("RETURN")
|
||||
| TokenKind._cast:
|
||||
write_s("CAST")
|
||||
| TokenKind.shift_left:
|
||||
write_s("<<")
|
||||
| TokenKind.shift_right:
|
||||
write_s(">>")
|
||||
| TokenKind.identifier:
|
||||
write_c('<');
|
||||
write_s(current_token^.value.string);
|
||||
write_c('>')
|
||||
| TokenKind.left_paren:
|
||||
write_s("(")
|
||||
| TokenKind.right_paren:
|
||||
write_s(")")
|
||||
| TokenKind.left_square:
|
||||
write_s("[")
|
||||
| TokenKind.right_square:
|
||||
write_s("]")
|
||||
| TokenKind.greater_equal:
|
||||
write_s(">=")
|
||||
| TokenKind.less_equal:
|
||||
write_s("<=")
|
||||
| TokenKind.greater_than:
|
||||
write_s(">")
|
||||
| TokenKind.less_than:
|
||||
write_s("<")
|
||||
| TokenKind.equal:
|
||||
write_s("=")
|
||||
| TokenKind.not_equal:
|
||||
write_s("<>")
|
||||
| TokenKind.semicolon:
|
||||
write_c(';')
|
||||
| TokenKind.dot:
|
||||
write_c('.')
|
||||
| TokenKind.comma:
|
||||
write_c(',')
|
||||
| TokenKind.plus:
|
||||
write_c('+')
|
||||
| TokenKind.minus:
|
||||
write_c('-')
|
||||
| TokenKind.multiplication:
|
||||
write_c('*')
|
||||
| TokenKind.division:
|
||||
write_c('/')
|
||||
| TokenKind.remainder:
|
||||
write_c('%')
|
||||
| TokenKind.assignment:
|
||||
write_s(":=")
|
||||
| TokenKind.colon:
|
||||
write_c(':')
|
||||
| TokenKind.hat:
|
||||
write_c('^')
|
||||
| TokenKind.at:
|
||||
write_c('@')
|
||||
| TokenKind.comment:
|
||||
write_s("(* COMMENT *)")
|
||||
| TokenKind.integer:
|
||||
write_c('<');
|
||||
write_i(current_token^.value.int_value);
|
||||
write_c('>')
|
||||
| TokenKind.word:
|
||||
write_c('<');
|
||||
write_i(current_token^.value.int_value);
|
||||
write_s("u>")
|
||||
| TokenKind.character:
|
||||
write_c('<');
|
||||
write_i(cast(current_token^.value.char_value: Int));
|
||||
write_s("c>")
|
||||
| TokenKind.string:
|
||||
write_s("\"...\"")
|
||||
| TokenKind._defer:
|
||||
write_s("DEFER")
|
||||
| TokenKind.exclamation:
|
||||
write_c('!')
|
||||
| TokenKind.arrow:
|
||||
write_s("->")
|
||||
else
|
||||
write_s("UNKNOWN<");
|
||||
write_i(cast(current_token^.kind: Int));
|
||||
write_c('>')
|
||||
end;
|
||||
write_c(' ');
|
||||
|
||||
|
Reference in New Issue
Block a user