| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -67,28 +67,28 @@ type
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				(*
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  External procedures.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				*)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc fopen(pathname: pointer to Char, mode: pointer to Char): pointer to FILE; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc fclose(stream: pointer to FILE): Int; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc fseek(stream: pointer to FILE, off: Int, whence: Int): Int; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc fopen(pathname: pointer to Char, mode: pointer to Char) -> pointer to FILE; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc fclose(stream: pointer to FILE) -> Int; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc fseek(stream: pointer to FILE, off: Int, whence: Int) -> Int; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc rewind(stream: pointer to FILE); extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc ftell(stream: pointer to FILE): Int; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc fread(ptr: pointer to Byte, size: Word, nmemb: Word, stream: pointer to FILE): Word; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc write(fd: Int, buf: pointer to Byte, Word: Int): Int; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc ftell(stream: pointer to FILE) -> Int; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc fread(ptr: pointer to Byte, size: Word, nmemb: Word, stream: pointer to FILE) -> Word; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc write(fd: Int, buf: pointer to Byte, Word: Int) -> Int; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc malloc(size: Word): pointer to Byte; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc malloc(size: Word) -> pointer to Byte; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc free(ptr: pointer to Byte); extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc calloc(nmemb: Word, size: Word): pointer to Byte; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc realloc(ptr: pointer to Byte, size: Word): pointer to Byte; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc calloc(nmemb: Word, size: Word) -> pointer to Byte; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc realloc(ptr: pointer to Byte, size: Word) -> pointer to Byte; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc memset(ptr: pointer to Char, c: Int, n: Int): pointer to Char; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc memset(ptr: pointer to Char, c: Int, n: Int) -> pointer to Char; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc strcmp(s1: pointer to Char, s2: pointer to Char): Int; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc strncmp(s1: pointer to Char, s2: pointer to Char, n: Word): Int; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc strncpy(dst: pointer to Char, src: pointer to Char, dsize: Word): pointer to Char; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc strcpy(dst: pointer to Char, src: pointer to Char): pointer to Char; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc strlen(ptr: pointer to Char): Word; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc strcmp(s1: pointer to Char, s2: pointer to Char) -> Int; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc strncmp(s1: pointer to Char, s2: pointer to Char, n: Word) -> Int; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc strncpy(dst: pointer to Char, src: pointer to Char, dsize: Word) -> pointer to Char; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc strcpy(dst: pointer to Char, src: pointer to Char) -> pointer to Char; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc strlen(ptr: pointer to Char) -> Word; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc strtol(nptr: pointer to Char, endptr: pointer to pointer to Char, base: Int): Int; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc strtol(nptr: pointer to Char, endptr: pointer to pointer to Char, base: Int) -> Int; extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc perror(s: pointer to Char); extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc exit(code: Int); extern
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -96,7 +96,7 @@ proc exit(code: Int); extern
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				(*
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  Standard procedures.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				*)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc reallocarray(ptr: pointer to Byte, n: Word, size: Word): pointer to Byte;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc reallocarray(ptr: pointer to Byte, n: Word, size: Word) -> pointer to Byte;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return realloc(ptr, n * size)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				end
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -154,40 +154,40 @@ begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  write_i(value)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc is_digit(c: Char): Bool;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc is_digit(c: Char) -> Bool;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return cast(c as Int) >= cast('0' as Int) and cast(c as Int) <= cast('9' as Int)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc is_alpha(c: Char): Bool;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc is_alpha(c: Char) -> Bool;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return cast(c as Int) >= cast('A' as Int) and cast(c as Int) <= cast('z' as Int)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc is_alnum(c: Char): Bool;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc is_alnum(c: Char) -> Bool;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return is_digit(c) or is_alpha(c)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc is_space(c: Char): Bool;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc is_space(c: Char) -> Bool;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return c = ' ' or c = '\n' or c = '\t'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc open_substring(string: String, start: Word): String;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc open_substring(string: String, start: Word) -> String;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  string.ptr := string.ptr + start;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  string.length := string.length - start;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return string
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc substring(string: String, start: Word, count: Word): String;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc substring(string: String, start: Word, count: Word) -> String;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  string.ptr := string.ptr + start;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  string.length := count
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc string_dup(origin: String): String;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc string_dup(origin: String) -> String;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				var
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  copy: pointer to Char;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				begin
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -198,7 +198,7 @@ begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return origin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc char_at(string: String, position: Word): Char;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc char_at(string: String, position: Word) -> Char;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return (string.ptr + position)^
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				end
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -207,7 +207,7 @@ end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  End of standard procedures.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				*)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc make_position(): Position;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc make_position() -> Position;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				var
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  result: Position;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				begin
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -216,7 +216,7 @@ begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return result
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc read_source(filename: pointer to Char, result: pointer to String): Bool;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc read_source(filename: pointer to Char, result: pointer to String) -> Bool;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				var
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  input_file: pointer to FILE,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  source_size: Int,
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -249,7 +249,7 @@ begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return true
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc escape_char(escape: Char, result: pointer to Char): Bool;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc escape_char(escape: Char, result: pointer to Char) -> Bool;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if escape = 'n' then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					result^ := '\n';
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -292,7 +292,7 @@ begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc advance_source(source_code: SourceCode, length: Word): SourceCode;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc advance_source(source_code: SourceCode, length: Word) -> SourceCode;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  source_code.text := open_substring(source_code.text, length);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  source_code.position.column := source_code.position.column + length;
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -300,7 +300,7 @@ begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return source_code
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc skip_spaces(source_code: SourceCode): SourceCode;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc skip_spaces(source_code: SourceCode) -> SourceCode;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  while source_code.text.length > 0u and is_space(char_at(source_code.text, 0)) do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if char_at(source_code.text, 0) = '\n' then
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -328,7 +328,7 @@ begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  token_content^ := substring(token_content^, 0u, content_length)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc lex_comment(source_code: pointer to SourceCode, token_content: pointer to String): Bool;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc lex_comment(source_code: pointer to SourceCode, token_content: pointer to String) -> Bool;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				var
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  content_length: Word;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				begin
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -349,7 +349,7 @@ begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return false
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc lex_character(input: pointer to Char, current_token: pointer to Token): pointer to Char;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc lex_character(input: pointer to Char, current_token: pointer to Token) -> pointer to Char;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if input^ = '\\' then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    input := input + 1;
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -363,7 +363,7 @@ begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return input
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc lex_string(input: pointer to Char, current_token: pointer to Token): pointer to Char;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc lex_string(input: pointer to Char, current_token: pointer to Token) -> pointer to Char;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				var
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  token_end: pointer to Char,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  constructed_string: pointer to Char,
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -548,7 +548,7 @@ begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  write_c('\n')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc categorize_identifier(token_content: String): Token;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc categorize_identifier(token_content: String) -> Token;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				var
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  current_token: Token;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				begin
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -622,7 +622,7 @@ begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return current_token
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc tokenize(source_code: SourceCode, tokens_size: pointer to Word): pointer to Token;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc tokenize(source_code: SourceCode, tokens_size: pointer to Word) -> pointer to Token;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				var
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  token_end: pointer to Char,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  tokens: pointer to Token,
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -786,13 +786,13 @@ begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return tokens
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc parse_literal(tokens: pointer to pointer to Token, tokens_size: pointer to Word): pointer to Literal;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc parse_literal(tokens: pointer to pointer to Token, tokens_size: pointer to Word) -> pointer to Literal;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return cast(calloc(1, sizeof(Literal)) as pointer to Literal)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc parse_constant_definition(tokens: pointer to pointer to Token,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    tokens_size: pointer to Word): pointer to ConstantDefinition;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    tokens_size: pointer to Word) -> pointer to ConstantDefinition;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				var
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  result: pointer to ConstantDefinition;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				begin
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -815,7 +815,7 @@ begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return result
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc parse_program(tokens: pointer to pointer to Token, tokens_size: pointer to Word): pointer to Program;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				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;
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -845,7 +845,7 @@ begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc parse_command_line*(argc: Int, argv: pointer to pointer to Char): pointer to CommandLine;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc parse_command_line*(argc: Int, argv: pointer to pointer to Char) -> pointer to CommandLine;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				var
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  parameter: pointer to pointer to Char,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  i: Int,
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -886,7 +886,7 @@ begin
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return result
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc process(argc: Int, argv: pointer to pointer to Char): Int;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proc process(argc: Int, argv: pointer to pointer to Char) -> Int;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				var
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  tokens: pointer to Token,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  tokens_size: Word,
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				 
 |