fix comment handling (including at beginning of files)
This commit is contained in:
28
k_prime.krak
28
k_prime.krak
@@ -968,6 +968,7 @@ fun main(argc: int, argv: **char): int {
|
|||||||
to_ret += input[i]
|
to_ret += input[i]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*return MalResult::Ok(MalValue::String(input.slice(l+1,r-1)));*/
|
||||||
return MalResult::Ok(MalValue::String(to_ret));
|
return MalResult::Ok(MalValue::String(to_ret));
|
||||||
})), MalValue::Nil(), ret_0_sym) //"
|
})), MalValue::Nil(), ret_0_sym) //"
|
||||||
grammer.add_to_nonterminal(atom, vec(grammer.add_terminal("-|(([a-z]|[A-Z]|_|\\*|\\?|\\+|!|=|&|<|>)([a-z]|[A-Z]|_|[0-9]|\\*|\\?|\\+|-|!|=|&|<|>)*)", MalValue::Nil(), fun(_: ref MalValue, input: ref str, l: int, r: int): MalResult {
|
grammer.add_to_nonterminal(atom, vec(grammer.add_terminal("-|(([a-z]|[A-Z]|_|\\*|\\?|\\+|!|=|&|<|>)([a-z]|[A-Z]|_|[0-9]|\\*|\\?|\\+|-|!|=|&|<|>)*)", MalValue::Nil(), fun(_: ref MalValue, input: ref str, l: int, r: int): MalResult {
|
||||||
@@ -1566,10 +1567,26 @@ fun main(argc: int, argv: **char): int {
|
|||||||
var i = 0
|
var i = 0
|
||||||
var current_ret = MalResult::Ok(MalValue::Nil())
|
var current_ret = MalResult::Ok(MalValue::Nil())
|
||||||
/*println(str("eval-read-string length is ") + input.length())*/
|
/*println(str("eval-read-string length is ") + input.length())*/
|
||||||
|
if i < input.length() {
|
||||||
|
// initial handle whitespace
|
||||||
|
var BSR = fungll(grammer, optional_WS, input.slice(i, -1))
|
||||||
|
var longest = -1
|
||||||
|
for (var j = 0; j < BSR.data.size; j++;) {
|
||||||
|
if BSR.data[j].nonterminal == optional_WS && BSR.data[j].left == 0 {
|
||||||
|
if BSR.data[j].right > longest {
|
||||||
|
longest = BSR.data[j].right
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if longest > 0 {
|
||||||
|
i += longest
|
||||||
|
}
|
||||||
|
/*println(str("after skip whitespace i is ") + i + "input is " + input.slice(i, -1))*/
|
||||||
|
}
|
||||||
while i < input.length() {
|
while i < input.length() {
|
||||||
var r = read_str(grammer, input.slice(i, -1))
|
var r = read_str(grammer, input.slice(i, -1))
|
||||||
i += r.first
|
i += r.first
|
||||||
/*println(str("new i is ") + i)*/
|
/*println(str("after read_str i is ") + i + " input is " + input.slice(i, -1))*/
|
||||||
if is_err(r.second) {
|
if is_err(r.second) {
|
||||||
return r.second
|
return r.second
|
||||||
}
|
}
|
||||||
@@ -1577,19 +1594,20 @@ fun main(argc: int, argv: **char): int {
|
|||||||
if is_err(current_ret) {
|
if is_err(current_ret) {
|
||||||
return current_ret
|
return current_ret
|
||||||
}
|
}
|
||||||
/*println("cutting through WS")*/
|
// handle whitespace again
|
||||||
var BSR = fungll(grammer, optional_WS, input.slice(i, -1))
|
var BSR = fungll(grammer, optional_WS, input.slice(i, -1))
|
||||||
var longest = -1
|
var longest = -1
|
||||||
for (var j = 0; j < BSR.data.size; j++;) {
|
for (var j = 0; j < BSR.data.size; j++;) {
|
||||||
if BSR.data[j].nonterminal == optional_WS && BSR.data[j].left == 0 {
|
if BSR.data[j].nonterminal == optional_WS && BSR.data[j].left == 0 {
|
||||||
longest = BSR.data[j].right
|
if BSR.data[j].right > longest {
|
||||||
|
longest = BSR.data[j].right
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/*println(str() + j + ": " + grammer.to_string(BSR.data[j]))*/
|
|
||||||
}
|
}
|
||||||
if longest > 0 {
|
if longest > 0 {
|
||||||
i += longest
|
i += longest
|
||||||
}
|
}
|
||||||
/*println(str("new i post WS is ") + i)*/
|
/*println(str("after skip whitespace i is ") + i + "input is " + input.slice(i, -1))*/
|
||||||
}
|
}
|
||||||
return current_ret
|
return current_ret
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user