Implement shift operators
This commit is contained in:
28
source.elna
28
source.elna
@ -173,7 +173,7 @@ end
|
||||
proc write_i(value: Int);
|
||||
var
|
||||
digit: Int, n: Word,
|
||||
buffer: array 10 of Char;
|
||||
buffer: array 10 of Char
|
||||
begin
|
||||
n := 10u;
|
||||
|
||||
@ -230,7 +230,7 @@ end
|
||||
|
||||
proc string_dup(origin: String) -> String;
|
||||
var
|
||||
copy: pointer to Char;
|
||||
copy: pointer to Char
|
||||
begin
|
||||
copy := cast(malloc(origin.length): pointer to Char);
|
||||
strncpy(copy, origin.ptr, origin.length);
|
||||
@ -244,7 +244,7 @@ end
|
||||
|
||||
proc make_position() -> Position;
|
||||
var
|
||||
result: Position;
|
||||
result: Position
|
||||
begin
|
||||
return Position(1u, 1u)
|
||||
end
|
||||
@ -253,7 +253,7 @@ proc read_source(filename: pointer to Char, result: pointer to String) -> Bool;
|
||||
var
|
||||
input_file: pointer to FILE,
|
||||
source_size: Int,
|
||||
input: pointer to Byte;
|
||||
input: pointer to Byte
|
||||
begin
|
||||
input_file := fopen(filename, "rb\0".ptr);
|
||||
|
||||
@ -349,7 +349,7 @@ end
|
||||
|
||||
proc lex_identifier(source_code: pointer to SourceCode, token_content: pointer to String);
|
||||
var
|
||||
content_length: Word;
|
||||
content_length: Word
|
||||
begin
|
||||
content_length := 0u;
|
||||
token_content^ := source_code^.text;
|
||||
@ -363,7 +363,7 @@ end
|
||||
|
||||
proc lex_comment(source_code: pointer to SourceCode, token_content: pointer to String) -> Bool;
|
||||
var
|
||||
content_length: Word;
|
||||
content_length: Word
|
||||
begin
|
||||
content_length := 0u;
|
||||
token_content^ := source_code^.text;
|
||||
@ -401,7 +401,7 @@ var
|
||||
token_end: pointer to Char,
|
||||
constructed_string: pointer to Char,
|
||||
token_length: Word,
|
||||
is_valid: Bool;
|
||||
is_valid: Bool
|
||||
begin
|
||||
token_end := input;
|
||||
|
||||
@ -439,7 +439,7 @@ end
|
||||
proc print_tokens(tokens: pointer to Token, tokens_size: Word);
|
||||
var
|
||||
current_token: pointer to Token,
|
||||
i: Word;
|
||||
i: Word
|
||||
begin
|
||||
i := 0u;
|
||||
while i < tokens_size do
|
||||
@ -583,7 +583,7 @@ end
|
||||
|
||||
proc categorize_identifier(token_content: String) -> Token;
|
||||
var
|
||||
current_token: Token;
|
||||
current_token: Token
|
||||
begin
|
||||
if "if" = token_content then
|
||||
current_token.kind := TOKEN_IF
|
||||
@ -662,7 +662,7 @@ var
|
||||
current_token: pointer to Token,
|
||||
token_length: Word,
|
||||
first_char: Char,
|
||||
token_content: String;
|
||||
token_content: String
|
||||
begin
|
||||
tokens_size^ := 0u;
|
||||
tokens := nil;
|
||||
@ -827,7 +827,7 @@ end
|
||||
proc parse_constant_definition(tokens: pointer to pointer to Token,
|
||||
tokens_size: pointer to Word) -> pointer to ConstantDefinition;
|
||||
var
|
||||
result: pointer to ConstantDefinition;
|
||||
result: pointer to ConstantDefinition
|
||||
begin
|
||||
result := cast(calloc(1u, ConstantDefinition.size): pointer to ConstantDefinition);
|
||||
|
||||
@ -851,7 +851,7 @@ end
|
||||
proc parse_program(tokens: pointer to pointer to Token, tokens_size: pointer to Word) -> pointer to Program;
|
||||
var
|
||||
result: pointer to Program,
|
||||
current_constant: pointer to pointer to ConstantDefinition;
|
||||
current_constant: pointer to pointer to ConstantDefinition
|
||||
begin
|
||||
result := cast(calloc(1u, Program.size): pointer to Program);
|
||||
|
||||
@ -885,7 +885,7 @@ proc parse_command_line*(argc: Int, argv: pointer to pointer to Char) -> pointer
|
||||
var
|
||||
parameter: pointer to pointer to Char,
|
||||
i: Int,
|
||||
result: pointer to CommandLine;
|
||||
result: pointer to CommandLine
|
||||
begin
|
||||
i := 1;
|
||||
result := cast(malloc(CommandLine.size): pointer to CommandLine);
|
||||
@ -927,7 +927,7 @@ var
|
||||
tokens: pointer to Token,
|
||||
tokens_size: Word,
|
||||
source_code: SourceCode,
|
||||
command_line: pointer to CommandLine;
|
||||
command_line: pointer to CommandLine
|
||||
begin
|
||||
command_line := parse_command_line(argc, argv);
|
||||
if command_line = nil then
|
||||
|
Reference in New Issue
Block a user