Support variable declaration initializer
This commit is contained in:
@@ -183,44 +183,45 @@ proc lexer_escape(escape: Char, result: ^Char) -> Bool;
|
||||
var
|
||||
successful: Bool;
|
||||
begin
|
||||
if escape = 'n' then
|
||||
result^ := '\n';
|
||||
successful := true
|
||||
elsif escape = 'a' then
|
||||
result^ := '\a';
|
||||
successful := true
|
||||
elsif escape = 'b' then
|
||||
result^ := '\b';
|
||||
successful := true
|
||||
elsif escape = 't' then
|
||||
result^ := '\t';
|
||||
successful := true
|
||||
elsif escape = 'f' then
|
||||
result^ := '\f';
|
||||
successful := true
|
||||
elsif escape = 'r' then
|
||||
result^ := '\r';
|
||||
successful := true
|
||||
elsif escape = 'v' then
|
||||
result^ := '\v';
|
||||
successful := true
|
||||
elsif escape = '\\' then
|
||||
result^ := '\\';
|
||||
successful := true
|
||||
elsif escape = '\'' then
|
||||
result^ := '\'';
|
||||
successful := true
|
||||
elsif escape = '"' then
|
||||
result^ := '"';
|
||||
successful := true
|
||||
elsif escape = '?' then
|
||||
result^ := '\?';
|
||||
successful := true
|
||||
elsif escape = '0' then
|
||||
result^ := '\0';
|
||||
successful := true
|
||||
else
|
||||
successful := false
|
||||
case escape of
|
||||
'n':
|
||||
result^ := '\n';
|
||||
successful := true
|
||||
| 'a':
|
||||
result^ := '\a';
|
||||
successful := true
|
||||
| 'b':
|
||||
result^ := '\b';
|
||||
successful := true
|
||||
| 't':
|
||||
result^ := '\t';
|
||||
successful := true
|
||||
| 'f':
|
||||
result^ := '\f';
|
||||
successful := true
|
||||
| 'r':
|
||||
result^ := '\r';
|
||||
successful := true
|
||||
| 'v':
|
||||
result^ := '\v';
|
||||
successful := true
|
||||
| '\\':
|
||||
result^ := '\\';
|
||||
successful := true
|
||||
| '\'':
|
||||
result^ := '\'';
|
||||
successful := true
|
||||
| '"':
|
||||
result^ := '"';
|
||||
successful := true
|
||||
| '?':
|
||||
result^ := '\?';
|
||||
successful := true
|
||||
| '0':
|
||||
result^ := '\0';
|
||||
successful := true
|
||||
else
|
||||
successful := false
|
||||
end;
|
||||
return successful
|
||||
end;
|
||||
@@ -304,11 +305,9 @@ proc lexer_string(source_code: ^SourceCode, token_content: ^StringBuffer) -> Boo
|
||||
var
|
||||
token_end, constructed_string: ^Char;
|
||||
token_length: Word;
|
||||
is_valid: Bool;
|
||||
is_valid: Bool := true;
|
||||
next_char: Char;
|
||||
begin
|
||||
is_valid := true;
|
||||
|
||||
while is_valid & ~source_code_empty(source_code) & source_code_head(source_code^) <> '"' do
|
||||
is_valid := lexer_character(source_code, @next_char);
|
||||
|
||||
@@ -625,9 +624,8 @@ end;
|
||||
proc parse(tokens: ^Token, tokens_size: Word);
|
||||
var
|
||||
current_token: ^Token;
|
||||
i: Word;
|
||||
i: Word := 0;
|
||||
begin
|
||||
i := 0u;
|
||||
while i < tokens_size do
|
||||
current_token := tokens + i;
|
||||
|
||||
@@ -787,11 +785,9 @@ end;
|
||||
|
||||
proc compile_in_stages(command_line: ^CommandLine, source_code: SourceCode) -> Int;
|
||||
var
|
||||
return_code: Int;
|
||||
return_code: Int := 0;
|
||||
lexer: Tokenizer;
|
||||
begin
|
||||
return_code := 0;
|
||||
|
||||
if command_line^.lex or command_line^.parse then
|
||||
lexer := lexer_text(source_code)
|
||||
end;
|
||||
@@ -808,11 +804,9 @@ var
|
||||
tokens_size: Word;
|
||||
source_code: SourceCode;
|
||||
command_line: ^CommandLine;
|
||||
return_code: Int;
|
||||
return_code: Int := 0;
|
||||
source_file: ^SourceFile;
|
||||
begin
|
||||
return_code := 0;
|
||||
|
||||
command_line := parse_command_line(argc, argv);
|
||||
if command_line = nil then
|
||||
return_code := 2
|
||||
|
Reference in New Issue
Block a user