diff --git a/krakenGrammer.kgm b/krakenGrammer.kgm index 9982f5a..86d8e66 100644 --- a/krakenGrammer.kgm +++ b/krakenGrammer.kgm @@ -157,7 +157,7 @@ numeric = "[0-9]+" ; string = triple_quoted_string | "\"(`|[0-9]|-|=| |[a-z]|\[|]|(\\\\)|(\\n)|(\\t)|(\\\*)|(\\0)|;|'| |,|.|/|~|!|@|#|$|%|^|&|\*|\(|\)|_|\+|[A-Z]|{|}|\||:|<|>|\?| |(\\\"))*\"" ; comment = cpp_comment | c_comment ; -cpp_comment = "//(`|[0-9]|-|=| |[a-z]|\[|]|\\|;|'|,|.|/|~|!|@|#|$|%|^|&|\*|\(|\)|_|\+|[A-Z]|{|}|\||:|\"|<|>|\?| )* +cpp_comment = "//[ -~]* " ; -c_comment = "(/\*/*\**((`|[0-9]|-|=| |[a-z]|\[|]|\\|;|'| -|,|.|~|!|@|#|$|%|^|&|\(|\)|_|\+|[A-Z]|{|}|\||:|\"|<|>|\?| )/*\**)+\*/)|(/\*\*/)" ; +c_comment = "(/\*/*\**(([ -)]|[0-~]|[+-.]| | +)/*\**)+\*/)|(/\*\*/)" ; diff --git a/stdlib/regex.krak b/stdlib/regex.krak index 64113ef..e26b52c 100644 --- a/stdlib/regex.krak +++ b/stdlib/regex.krak @@ -137,9 +137,12 @@ obj regex (Object, Serializable) { for (var depth = 1; depth > 0; perenEnd++;) { if (perenEnd >= regex_string.length()) ast_transformation::error(string::string("can't find matching peren in: ") + regex_string) - if (regex_string[perenEnd] == '(') + // be careful, this isn't quite right yet + /*var not_non_special = perenEnd == 0 || (regex_string[perenEnd-1] != '\\' && regex_string[perenEnd-1] != '[' && (perenEnd+1 >= regex_string.length() || regex_string[perenEnd+1] != ']'))*/ + var not_non_special = perenEnd == 0 || (regex_string[perenEnd-1] != '[' && (perenEnd+1 >= regex_string.length() || regex_string[perenEnd+1] != ']')) + if (regex_string[perenEnd] == '(' && not_non_special) depth++ - else if (regex_string[perenEnd] == ')') + else if (regex_string[perenEnd] == ')' && not_non_special) depth-- } var innerBeginEnd = compile(regex_string.slice(i+1, perenEnd-1))