better escape code support
This commit is contained in:
@@ -219,6 +219,16 @@ decode_character :: proc(parser: ^Parser, tok: token.Token) -> (u64, bool) {
|
||||
return u64(value), width == len(contents)
|
||||
}
|
||||
|
||||
decode_hex_digit :: proc(value: byte) -> byte {
|
||||
if value >= '0' && value <= '9' {
|
||||
return value - '0'
|
||||
}
|
||||
if value >= 'a' && value <= 'f' {
|
||||
return value - 'a' + 10
|
||||
}
|
||||
return value - 'A' + 10
|
||||
}
|
||||
|
||||
parse_type_constant :: proc(parser: ^Parser) -> (u64, bool) {
|
||||
negative := false
|
||||
if _, ok := allow(parser, .Minus); ok {
|
||||
@@ -3243,6 +3253,9 @@ decode_import_path :: proc(parser: ^Parser, tok: token.Token) -> string {
|
||||
case 'r': value = '\r'
|
||||
case 't': value = '\t'
|
||||
case '0': value = 0
|
||||
case 'x':
|
||||
value = decode_hex_digit(text[index+1])*16 + decode_hex_digit(text[index+2])
|
||||
index += 2
|
||||
case:
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user