ldgen: rename key-value grammar class

This commit is contained in:
Renz Bagaporo 2021-03-05 17:48:47 +08:00
parent 10c5226095
commit 69906ed5f2
3 changed files with 12 additions and 11 deletions

View File

@ -25,7 +25,6 @@ from pyparsing import (Combine, Forward, Group, Keyword, Literal, OneOrMore, Opt
originalTextFor, restOfLine)
from sdkconfig import SDKConfig
KeyGrammar = namedtuple('KeyGrammar', 'grammar min max required')
class FragmentFile():
@ -192,6 +191,8 @@ class Fragment():
such as checking the validity of the fragment name and getting the entry values.
"""
KeyValue = namedtuple('KeyValue', 'grammar min max required')
IDENTIFIER = Word(alphas + '_', alphanums + '_')
ENTITY = Word(alphanums + '.-_$')
@ -213,7 +214,7 @@ class Sections(Fragment):
entries_grammar = Combine(GNU_LD_SYMBOLS + Optional('+'))
grammars = {
'entries': KeyGrammar(entries_grammar.setResultsName('section'), 1, None, True)
'entries': Fragment.KeyValue(entries_grammar.setResultsName('section'), 1, None, True)
}
"""
@ -251,7 +252,7 @@ class Scheme(Fragment):
"""
grammars = {
'entries': KeyGrammar(Fragment.IDENTIFIER.setResultsName('sections') + Suppress('->') +
'entries': Fragment.KeyValue(Fragment.IDENTIFIER.setResultsName('sections') + Suppress('->') +
Fragment.IDENTIFIER.setResultsName('target'), 1, None, True)
}
@ -448,8 +449,8 @@ class Mapping(Fragment):
Optional(Suppress(';') + delimitedList(section_target_flags).setResultsName('sections_target_flags')))
grammars = {
'archive': KeyGrammar(Or([Fragment.ENTITY, Word(Entity.ALL)]).setResultsName('archive'), 1, 1, True),
'entries': KeyGrammar(entry, 0, None, True)
'archive': Fragment.KeyValue(Or([Fragment.ENTITY, Word(Entity.ALL)]).setResultsName('archive'), 1, 1, True),
'entries': Fragment.KeyValue(entry, 0, None, True)
}
return grammars

View File

@ -292,7 +292,7 @@ class RootNode(EntityNode):
def __init__(self):
EntityNode.__init__(self, None, Entity.ALL)
self.child_t = ArchiveNode
self.entity = Entity('*')
self.entity = Entity(Entity.ALL)
class Generation:

View File

@ -23,20 +23,20 @@ from io import StringIO
from pyparsing import ParseException, ParseFatalException, Word, alphanums
try:
from fragments import FRAGMENT_TYPES, Fragment, FragmentFile, KeyGrammar, Mapping
from fragments import FRAGMENT_TYPES, Fragment, FragmentFile, Mapping
from sdkconfig import SDKConfig
except ImportError:
sys.path.append('../')
from fragments import FRAGMENT_TYPES, Fragment, FragmentFile, KeyGrammar, Mapping
from fragments import FRAGMENT_TYPES, Fragment, FragmentFile, Mapping
from sdkconfig import SDKConfig
class SampleFragment(Fragment):
grammars = {
'key_1': KeyGrammar(Word(alphanums + '_').setResultsName('value'), 0, None, True),
'key_2': KeyGrammar(Word(alphanums + '_').setResultsName('value'), 0, None, False),
'key_3': KeyGrammar(Word(alphanums + '_').setResultsName('value'), 3, 5, False)
'key_1': Fragment.KeyValue(Word(alphanums + '_').setResultsName('value'), 0, None, True),
'key_2': Fragment.KeyValue(Word(alphanums + '_').setResultsName('value'), 0, None, False),
'key_3': Fragment.KeyValue(Word(alphanums + '_').setResultsName('value'), 3, 5, False)
}
def set_key_value(self, key, parse_results):