diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/cldf-prs.lua')
-rw-r--r-- | Master/texmf-dist/tex/context/base/cldf-prs.lua | 42 |
1 files changed, 31 insertions, 11 deletions
diff --git a/Master/texmf-dist/tex/context/base/cldf-prs.lua b/Master/texmf-dist/tex/context/base/cldf-prs.lua index 160d30b1956..1554b5e57f9 100644 --- a/Master/texmf-dist/tex/context/base/cldf-prs.lua +++ b/Master/texmf-dist/tex/context/base/cldf-prs.lua @@ -15,17 +15,18 @@ local format = string.format local cpatterns = patterns.context or { } patterns.context = cpatterns +local utf8char = patterns.utf8char +local cardinal = patterns.cardinal + +local leftbrace = P("{") +local rightbrace = P("}") local backslash = P("\\") -local csname = backslash * P(1) * (1-backslash)^0 +local csname = backslash * P(1) * (1-backslash-leftbrace)^0 * P(" ")^0 local sign = P("+") / "\\textplus " + P("-") / "\\textminus " -local leftbrace = P("{") -local rightbrace = P("}") local nested = P { leftbrace * (V(1) + (1-rightbrace))^0 * rightbrace } local subscript = P("_") local superscript = P("^") -local utf8char = patterns.utf8char -local cardinal = patterns.cardinal -- local scripts = P { "start", -- start = V("csname") + V("lowfirst") + V("highfirst"), @@ -35,22 +36,41 @@ local cardinal = patterns.cardinal -- highfirst = superscript * ( Cc("\\hilo{%s}{%s}") * V("content") * subscript + Cc("\\high{%s}") ) * V("content") / format, -- } -local scripts = P { "start", - start = V("csname") + V("lowfirst") + V("highfirst"), +-- local scripts = P { "start", +-- start = (V("csname") + V("lowfirst") + V("highfirst"))^1, +-- csname = csname, +-- content = Cs(V("csname") + nested + sign^-1 * (cardinal + utf8char)), +-- lowfirst = (subscript /"") * ( Cc("\\lohi{") * V("content") * Cc("}{") * (superscript/"") + Cc("\\low{" ) ) * V("content") * Cc("}"), +-- highfirst = (superscript/"") * ( Cc("\\hilo{") * V("content") * Cc("}{") * (subscript /"") + Cc("\\high{") ) * V("content") * Cc("}"), +-- } + +local scripted = Cs { "start", + start = (V("csname") + V("nested") + V("lowfirst") + V("highfirst") + V("utf8char"))^1, + rest = V("csname") + V("nested") + V("lowfirst") + V("highfirst"), csname = csname, - content = Cs(V("csname") + nested + sign^-1 * (cardinal + utf8char)), + utf8char = utf8char, + -- nested = leftbrace * (V("rest") + (V("utf8char")-rightbrace))^0 * rightbrace, + nested = leftbrace * (V("start") -rightbrace)^0 * rightbrace, + content = Cs(V("nested") + sign^-1 * (cardinal + V("utf8char"))), + content = V("nested") + sign^-1 * (cardinal + V("utf8char")), lowfirst = (subscript /"") * ( Cc("\\lohi{") * V("content") * Cc("}{") * (superscript/"") + Cc("\\low{" ) ) * V("content") * Cc("}"), highfirst = (superscript/"") * ( Cc("\\hilo{") * V("content") * Cc("}{") * (subscript /"") + Cc("\\high{") ) * V("content") * Cc("}"), } -local scripted = Cs((csname + scripts + utf8char)^0) -cpatterns.scripts = scripts +-- local scripted = Cs((scripts)) + +-- cpatterns.scripts = scripts cpatterns.csname = csname cpatterns.scripted = scripted cpatterns.nested = nested --- inspect(scripted) -- print(lpegmatch(scripted,"10^-3_x")) +-- print(lpegmatch(scripted,"\\L {C_5}")) +-- print(lpegmatch(scripted,"\\SL{}")) +-- print(lpegmatch(scripted,"\\SL{C_5}")) +-- print(lpegmatch(scripted,"\\SL{C_5}")) +-- print(lpegmatch(scripted,"{C_5}")) +-- print(lpegmatch(scripted,"{\\C_5}")) -- print(lpegmatch(scripted,"10^-a")) |