clean up tokenizer.
This commit is contained in:
parent
c28cfb0710
commit
da92eb4e36
|
@ -25,43 +25,9 @@
|
||||||
scratch.push_back(fc);
|
scratch.push_back(fc);
|
||||||
}
|
}
|
||||||
|
|
||||||
# vstring_quoted =
|
schar = [^'] $push_back;
|
||||||
# [{]
|
|
||||||
# ( (any-nl-[}]) ${ var.push_back(fc); } )*
|
|
||||||
# [}]
|
|
||||||
# %{
|
|
||||||
# auto iter = Environment.find(var);
|
|
||||||
# if (iter != Environment.end() {
|
|
||||||
# scratch.append(iter->second);
|
|
||||||
# })
|
|
||||||
# var.clear();
|
|
||||||
# }
|
|
||||||
# $err{
|
|
||||||
# throw std::runtime_error("### MPW Shell - '{ must occur in pairs.");
|
|
||||||
# }
|
|
||||||
# ;
|
|
||||||
|
|
||||||
# vstring_unqoted =
|
|
||||||
# [{]
|
|
||||||
# ( (any-nl-[}]) ${ var.push_back(fc); } )*
|
|
||||||
# [}]
|
|
||||||
# %{
|
|
||||||
# auto iter = Environment.find(var);
|
|
||||||
# if (iter != Environment.end() {
|
|
||||||
# // re-parse. ", ', { are not
|
|
||||||
# // special. all others are treated normally.
|
|
||||||
# })
|
|
||||||
# var.clear();
|
|
||||||
# }
|
|
||||||
# $err{
|
|
||||||
# throw std::runtime_error("### MPW Shell - '{ must occur in pairs.");
|
|
||||||
# }
|
|
||||||
# ;
|
|
||||||
|
|
||||||
sstring =
|
sstring =
|
||||||
[']
|
['] schar** [']
|
||||||
( (any-nl-[']) $push_back )*
|
|
||||||
[']
|
|
||||||
${ quoted = true; }
|
${ quoted = true; }
|
||||||
$err{
|
$err{
|
||||||
throw std::runtime_error("### MPW Shell - 's must occur in pairs.");
|
throw std::runtime_error("### MPW Shell - 's must occur in pairs.");
|
||||||
|
@ -71,25 +37,17 @@
|
||||||
escape_seq =
|
escape_seq =
|
||||||
escape
|
escape
|
||||||
(
|
(
|
||||||
'f' ${scratch.push_back('\f'); }
|
'f' ${scratch.push_back('\f'); }
|
||||||
|
|
| 'n' ${scratch.push_back('\n'); /* \r ? */ }
|
||||||
'n' ${scratch.push_back('\n'); /* \r ? */ }
|
| 't' ${scratch.push_back('\t'); }
|
||||||
|
|
| [^fnt] $push_back
|
||||||
't' ${scratch.push_back('\t'); }
|
|
||||||
|
|
|
||||||
any-[fnt] $push_back
|
|
||||||
)
|
)
|
||||||
;
|
;
|
||||||
|
|
||||||
# double-quoted string.
|
# double-quoted string.
|
||||||
|
dchar = escape_seq | (any - escape - ["]) $push_back;
|
||||||
dstring =
|
dstring =
|
||||||
["]
|
["] dchar** ["]
|
||||||
(
|
|
||||||
escape_seq
|
|
||||||
|
|
|
||||||
(any-escape-["]) $push_back
|
|
||||||
)*
|
|
||||||
["]
|
|
||||||
${ quoted = true; }
|
${ quoted = true; }
|
||||||
$err{
|
$err{
|
||||||
throw std::runtime_error("### MPW Shell - \"s must occur in pairs.");
|
throw std::runtime_error("### MPW Shell - \"s must occur in pairs.");
|
||||||
|
@ -110,6 +68,7 @@
|
||||||
|
|
||||||
'<' %push_token => { tokens.emplace_back("<", '<'); };
|
'<' %push_token => { tokens.emplace_back("<", '<'); };
|
||||||
|
|
||||||
|
# these should be eval-only too...
|
||||||
'||' %push_token => { tokens.emplace_back("||", '||'); };
|
'||' %push_token => { tokens.emplace_back("||", '||'); };
|
||||||
'|' %push_token => { tokens.emplace_back("|", '|'); };
|
'|' %push_token => { tokens.emplace_back("|", '|'); };
|
||||||
|
|
||||||
|
@ -180,8 +139,7 @@
|
||||||
dstring ;
|
dstring ;
|
||||||
escape_seq;
|
escape_seq;
|
||||||
|
|
||||||
(any-escape-['"]) => push_back; # { scratch.append(ts, te); };
|
(any-escape-['"]) => push_back;
|
||||||
#(any-escape-ws-[>'"])+ => { scratch.append(ts, te); };
|
|
||||||
*|
|
*|
|
||||||
;
|
;
|
||||||
}%%
|
}%%
|
||||||
|
|
Loading…
Reference in New Issue