I need to implement a lexical analyzer and I need a data structure to save the keywords. I was advised to use a hash table to keep the keywords and one suggestion was to use C# Hash Table form System.Collections. But I have a problem: to use this hash table I need a key and an item. I have only the keyword. Should I use the keyword as key or as item,or as both? And since the keywords are different can I use another data structure, for example a binary tree? My real interest is this: how does a compiler implement this issue?
Which is the key and which is the item for a keywords hash table?
276 Views Asked by Radu Mardari At
1
There are 1 best solutions below
Related Questions in C#
- app engine ndb fetch is very slow
- GAE/P: Migrating to NDB efficiently
- App Engine - NDB query with projection requires subproperty?
- Can inheritance be modelled in app engine datastore by same kind and different properties?
- App engine datastore denormalization: index properties in the main entity or the denormalized entity?
- How to filter NDB entities having exactly the same repeated properties?
- How to update one property for multiple NDB entities?
- ndb appengine nonetype error
- Find GAE Datastore entities by application ID
- How to refresh configuration entries kept in Google App Engine Datastore?
Related Questions in DATA-STRUCTURES
- app engine ndb fetch is very slow
- GAE/P: Migrating to NDB efficiently
- App Engine - NDB query with projection requires subproperty?
- Can inheritance be modelled in app engine datastore by same kind and different properties?
- App engine datastore denormalization: index properties in the main entity or the denormalized entity?
- How to filter NDB entities having exactly the same repeated properties?
- How to update one property for multiple NDB entities?
- ndb appengine nonetype error
- Find GAE Datastore entities by application ID
- How to refresh configuration entries kept in Google App Engine Datastore?
Related Questions in COMPILER-CONSTRUCTION
- app engine ndb fetch is very slow
- GAE/P: Migrating to NDB efficiently
- App Engine - NDB query with projection requires subproperty?
- Can inheritance be modelled in app engine datastore by same kind and different properties?
- App engine datastore denormalization: index properties in the main entity or the denormalized entity?
- How to filter NDB entities having exactly the same repeated properties?
- How to update one property for multiple NDB entities?
- ndb appengine nonetype error
- Find GAE Datastore entities by application ID
- How to refresh configuration entries kept in Google App Engine Datastore?
Related Questions in COMPILATION
- app engine ndb fetch is very slow
- GAE/P: Migrating to NDB efficiently
- App Engine - NDB query with projection requires subproperty?
- Can inheritance be modelled in app engine datastore by same kind and different properties?
- App engine datastore denormalization: index properties in the main entity or the denormalized entity?
- How to filter NDB entities having exactly the same repeated properties?
- How to update one property for multiple NDB entities?
- ndb appengine nonetype error
- Find GAE Datastore entities by application ID
- How to refresh configuration entries kept in Google App Engine Datastore?
Related Questions in LEXICAL-ANALYSIS
- app engine ndb fetch is very slow
- GAE/P: Migrating to NDB efficiently
- App Engine - NDB query with projection requires subproperty?
- Can inheritance be modelled in app engine datastore by same kind and different properties?
- App engine datastore denormalization: index properties in the main entity or the denormalized entity?
- How to filter NDB entities having exactly the same repeated properties?
- How to update one property for multiple NDB entities?
- ndb appengine nonetype error
- Find GAE Datastore entities by application ID
- How to refresh configuration entries kept in Google App Engine Datastore?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
In general, keywords have only syntactic value, so in most compilers they are only used to select an appropriate grammatical rule. Their "value", as such, is consumed immediately. Since their identity is the only useful information, it is probably more appropriate to use a
HashSetthan aHashMap.However, there might be a set of keywords which are syntactically identical, forming what is effectively an enumeration type. In such cases, the enumeration value could be the value associated with the keyword.
For a handbuilt lexical analyzer, the use of a hashset or other such datastructure may prove simple, but most compilers will actually compile the keywords along with the other lexical token patterns into a finite state automaton. This allows the keywords to be recognized during the lexical scan, without any external datastructure.
Regardless, in almost all languages the set of keywords is fixed and so it is most appropriate to use an efficient datastructure compiled into the lexical scanner. For example, instead of a binary tree, it would be reasonable to use a sorted static vector of strings which could be binary searched. Alternatively, a preconstructed trie could be used; this would be almost equivalent to the finite state automaton referred to above.