Skip to content

Commit

Permalink
rc: Parser fixes for negative lookup
Browse files Browse the repository at this point in the history
  • Loading branch information
ptmcg authored and nijel committed Nov 8, 2021
1 parent 673ee12 commit 5f132ad
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 15 deletions.
20 changes: 11 additions & 9 deletions translate/convert/po2rc.py
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ def convert_comment(self, out, addnl, comment):

def convert_dialog(self, s, loc, toks):
out = []
out.append(toks.block_id)
out.append(toks.block_id[0])
out.append(" ")
out.append(toks.block_type)
if toks.caption:
Expand Down Expand Up @@ -102,12 +102,13 @@ def convert_dialog(self, s, loc, toks):
out.append(NL)
addnl = False
out.append(" ")
if len(c[0]) >= 16:
out.append(c[0])
c0 = c[0]
if len(c0[0]) >= 16:
out.append(c0[0])
# If more than 16 char, put it on a new line to align it.
out.append(NL + " " * (16 + 4))
else:
out.append(c[0].ljust(16))
out.append(c0[0].ljust(16))

tmp = []

Expand Down Expand Up @@ -155,13 +156,14 @@ def convert_string_table(self, s, loc, toks):
out.append(NL)
addnl = False
out.append(" ")
if len(c[0]) >= 24:
out.append(c[0])
c0 = c[0]
if len(c0[0]) >= 24:
out.append(c0[0])
out.append(NL + " " * (24 + 4))
else:
out.append(c[0].ljust(24))
out.append(c0[0].ljust(24))

name = rc.generate_stringtable_name(c[0])
name = rc.generate_stringtable_name(c0[0])
msgid = c[1][1:-1]
if msgid in self.inputdict:
if name in self.inputdict[msgid]:
Expand Down Expand Up @@ -265,7 +267,7 @@ def convert_popup(self, popup, pre_name, ident=1):
def convert_menu(self, s, loc, toks):
out = []

out.append(toks.block_id)
out.append(toks.block_id[0])
out.append(" ")
out.append(toks.block_type)

Expand Down
14 changes: 8 additions & 6 deletions translate/storage/rc.py
Original file line number Diff line number Diff line change
Expand Up @@ -164,9 +164,7 @@ def rc_statement():
block_start = (Keyword("{") | Keyword("BEGIN")).set_name("block_start")
block_end = (Keyword("}") | Keyword("END")).set_name("block_end")

reserved_words = block_start | block_end

name_id = ~reserved_words + Word(alphas, alphanums + "_").set_name("name_id")
name_id = Group(Word(alphas, alphanums + "_")).set_name("name_id")

numbers = Word(nums)

Expand Down Expand Up @@ -198,7 +196,11 @@ def rc_statement():
| comments
)

block = block_start + ZeroOrMore(undefined_control)("controls") + block_end
block = (
block_start
+ ZeroOrMore(undefined_control, stop_on=block_end)("controls")
+ block_end
)

dialog = (
name_id("block_id")
Expand All @@ -219,7 +221,7 @@ def rc_statement():
Keyword("POPUP")("block_type")
+ Optional(quoted_string("caption"))
+ block_start
+ ZeroOrMore(Group(menu_item | popup_block))("elements")
+ ZeroOrMore(Group(menu_item | popup_block), stop_on=block_end)("elements")
+ block_end
)("popups*")

Expand All @@ -228,7 +230,7 @@ def rc_statement():
+ Keyword("MENU")("block_type")
+ block_options
+ block_start
+ ZeroOrMore(popup_block)
+ ZeroOrMore(popup_block, stop_on=block_end)
+ block_end
)

Expand Down

0 comments on commit 5f132ad

Please sign in to comment.