forked from espressif/esp-idf
ldgen: rename key-value grammar class
This commit is contained in:
@@ -25,7 +25,6 @@ from pyparsing import (Combine, Forward, Group, Keyword, Literal, OneOrMore, Opt
|
|||||||
originalTextFor, restOfLine)
|
originalTextFor, restOfLine)
|
||||||
from sdkconfig import SDKConfig
|
from sdkconfig import SDKConfig
|
||||||
|
|
||||||
KeyGrammar = namedtuple('KeyGrammar', 'grammar min max required')
|
|
||||||
|
|
||||||
|
|
||||||
class FragmentFile():
|
class FragmentFile():
|
||||||
@@ -192,6 +191,8 @@ class Fragment():
|
|||||||
such as checking the validity of the fragment name and getting the entry values.
|
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 + '_')
|
IDENTIFIER = Word(alphas + '_', alphanums + '_')
|
||||||
ENTITY = Word(alphanums + '.-_$')
|
ENTITY = Word(alphanums + '.-_$')
|
||||||
|
|
||||||
@@ -213,7 +214,7 @@ class Sections(Fragment):
|
|||||||
entries_grammar = Combine(GNU_LD_SYMBOLS + Optional('+'))
|
entries_grammar = Combine(GNU_LD_SYMBOLS + Optional('+'))
|
||||||
|
|
||||||
grammars = {
|
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 = {
|
grammars = {
|
||||||
'entries': KeyGrammar(Fragment.IDENTIFIER.setResultsName('sections') + Suppress('->') +
|
'entries': Fragment.KeyValue(Fragment.IDENTIFIER.setResultsName('sections') + Suppress('->') +
|
||||||
Fragment.IDENTIFIER.setResultsName('target'), 1, None, True)
|
Fragment.IDENTIFIER.setResultsName('target'), 1, None, True)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -448,8 +449,8 @@ class Mapping(Fragment):
|
|||||||
Optional(Suppress(';') + delimitedList(section_target_flags).setResultsName('sections_target_flags')))
|
Optional(Suppress(';') + delimitedList(section_target_flags).setResultsName('sections_target_flags')))
|
||||||
|
|
||||||
grammars = {
|
grammars = {
|
||||||
'archive': KeyGrammar(Or([Fragment.ENTITY, Word(Entity.ALL)]).setResultsName('archive'), 1, 1, True),
|
'archive': Fragment.KeyValue(Or([Fragment.ENTITY, Word(Entity.ALL)]).setResultsName('archive'), 1, 1, True),
|
||||||
'entries': KeyGrammar(entry, 0, None, True)
|
'entries': Fragment.KeyValue(entry, 0, None, True)
|
||||||
}
|
}
|
||||||
|
|
||||||
return grammars
|
return grammars
|
||||||
|
@@ -292,7 +292,7 @@ class RootNode(EntityNode):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
EntityNode.__init__(self, None, Entity.ALL)
|
EntityNode.__init__(self, None, Entity.ALL)
|
||||||
self.child_t = ArchiveNode
|
self.child_t = ArchiveNode
|
||||||
self.entity = Entity('*')
|
self.entity = Entity(Entity.ALL)
|
||||||
|
|
||||||
|
|
||||||
class Generation:
|
class Generation:
|
||||||
|
@@ -23,20 +23,20 @@ from io import StringIO
|
|||||||
from pyparsing import ParseException, ParseFatalException, Word, alphanums
|
from pyparsing import ParseException, ParseFatalException, Word, alphanums
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from fragments import FRAGMENT_TYPES, Fragment, FragmentFile, KeyGrammar, Mapping
|
from fragments import FRAGMENT_TYPES, Fragment, FragmentFile, Mapping
|
||||||
from sdkconfig import SDKConfig
|
from sdkconfig import SDKConfig
|
||||||
except ImportError:
|
except ImportError:
|
||||||
sys.path.append('../')
|
sys.path.append('../')
|
||||||
from fragments import FRAGMENT_TYPES, Fragment, FragmentFile, KeyGrammar, Mapping
|
from fragments import FRAGMENT_TYPES, Fragment, FragmentFile, Mapping
|
||||||
from sdkconfig import SDKConfig
|
from sdkconfig import SDKConfig
|
||||||
|
|
||||||
|
|
||||||
class SampleFragment(Fragment):
|
class SampleFragment(Fragment):
|
||||||
|
|
||||||
grammars = {
|
grammars = {
|
||||||
'key_1': KeyGrammar(Word(alphanums + '_').setResultsName('value'), 0, None, True),
|
'key_1': Fragment.KeyValue(Word(alphanums + '_').setResultsName('value'), 0, None, True),
|
||||||
'key_2': KeyGrammar(Word(alphanums + '_').setResultsName('value'), 0, None, False),
|
'key_2': Fragment.KeyValue(Word(alphanums + '_').setResultsName('value'), 0, None, False),
|
||||||
'key_3': KeyGrammar(Word(alphanums + '_').setResultsName('value'), 3, 5, False)
|
'key_3': Fragment.KeyValue(Word(alphanums + '_').setResultsName('value'), 3, 5, False)
|
||||||
}
|
}
|
||||||
|
|
||||||
def set_key_value(self, key, parse_results):
|
def set_key_value(self, key, parse_results):
|
||||||
|
Reference in New Issue
Block a user