aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Update CHANGELOGRyo Nihei2021-10-091-0/+12
|
* Update godocRyo Nihei2021-10-052-8/+16
|
* Remove the ModeName and KindName fields from the driver.Token structRyo Nihei2021-10-035-270/+313
|
* Format the source code of a lexer maleeni-go generatesRyo Nihei2021-10-021-40/+140
|
* Disallow upper cases in an identifierRyo Nihei2021-09-244-99/+116
|
* Remove --debug option from compile commandRyo Nihei2021-09-233-107/+2
|
* Keep the order of AST nodes constantRyo Nihei2021-09-224-20/+50
|
* Add name field to the lexical specificationRyo Nihei2021-09-188-23/+97
|
* Generate constant values representing mode IDs, mode names, kind IDs, and ↵Ryo Nihei2021-09-184-106/+515
| | | | kind names
* Update CHANGELOGRyo Nihei2021-09-141-0/+7
|
* Add maleeni-go commandRyo Nihei2021-09-144-37/+668
| | | | maleeni-go generates a lexer that recognizes a specific lexical specification.
* Define a lexical specification interfaceRyo Nihei2021-09-116-353/+370
|
* Remove --debug option from the lex commandRyo Nihei2021-09-082-63/+1
|
* Update CHANGELOGRyo Nihei2021-08-221-0/+7
|
* Add lexeme positions to tokensRyo Nihei2021-08-073-39/+226
| | | | close #1
* Use Go 1.16Ryo Nihei2021-08-072-2/+2
|
* Update CHANGELOGRyo Nihei2021-08-021-0/+7
|
* Change APIsRyo Nihei2021-08-0111-231/+289
| | | | | | | | | | | | | | | | | | | | | | Change fields of tokens, results of lexical analysis, as follows: - Rename: mode -> mode_id - Rename: kind_id -> mode_kind_id - Add: kind_id The kind ID is unique across all modes, but the mode kind ID is unique only within a mode. Change fields of a transition table as follows: - Rename: initial_mode -> initial_mode_id - Rename: modes -> mode_names - Rename: kinds -> kind_names - Rename: specs[].kinds -> specs[].kind_names - Rename: specs[].dfa.initial_state -> specs[].dfa.initial_state_id Change public types defined in the spec package as follows: - Rename: LexModeNum -> LexModeID - Rename: LexKind -> LexKindName - Add: LexKindID - Add: StateID
* Add unique kind IDs to tokensRyo Nihei2021-08-015-178/+239
|
* Fix CHANGELOGRyo Nihei2021-07-291-1/+1
|
* Update CHANGELOGRyo Nihei2021-07-221-0/+7
|
* Add CHANGELOGRyo Nihei2021-07-221-0/+17
|
* Add spec.EscapePattern functionRyo Nihei2021-07-222-0/+49
|
* Support passive mode transitionRyo Nihei2021-06-103-25/+140
|
* Update READMERyo Nihei2021-06-081-1/+1
|
* Update READMERyo Nihei2021-06-041-2/+30
|
* Add status badgeRyo Nihei2021-06-031-0/+2
|
* Set up CIRyo Nihei2021-06-031-0/+22
|
* Update READMERyo Nihei2021-06-021-0/+13
|
* Update READMERyo Nihei2021-05-281-0/+59
|
* Add example lexical specificationRyo Nihei2021-05-273-0/+604
|
* Allow duplicate names between fragments and non-fragmentsRyo Nihei2021-05-273-11/+123
|
* Add fragment expressionRyo Nihei2021-05-2511-61/+540
| | | | A fragment entry is defined by an entry whose `fragment` field is `true`, and is referenced by a fragment expression (`\f{...}`).
* Fix the initial state numberRyo Nihei2021-05-191-1/+5
| | | | Since 0 represents an invalid value in a transition table, assign a number greater than or equal to 1 to states.
* Remove the shorthand for --compression-level option from the compile commandRyo Nihei2021-05-131-1/+1
|
* Rename fields of driver.TokenRyo Nihei2021-05-133-26/+25
|
* Use go fmt instead of gofmtRyo Nihei2021-05-121-1/+1
|
* Add --compression-level option to compile commandRyo Nihei2021-05-116-45/+119
| | | | --compression-level specifies a compression level. The default value is 2.
* Fix a text representation of an error tokenRyo Nihei2021-05-112-22/+51
| | | | This commit fixes a bug that caused the second and subsequent characters of the text representation of an error token to be missing.
* Update README and godocRyo Nihei2021-05-102-8/+227
|
* Change package structureRyo Nihei2021-05-086-7/+5
| | | | The executable can be installed using `go install ./cmd/maleeni`.
* Add --break-on-error option to lex commandRyo Nihei2021-05-082-3/+9
| | | | As you use --break-on-error option, break lexical analysis with exit status 1 immediately when an error token appears.
* Add CLI optionsRyo Nihei2021-05-084-56/+117
|
* Change type of acceping_states to sliceRyo Nihei2021-05-073-5/+9
|
* Add transition table compressorRyo Nihei2021-05-076-18/+431
|
* Remove Peek* functionsRyo Nihei2021-05-052-86/+0
|
* Improve performance of the symbolPositionSetRyo Nihei2021-05-044-63/+98
| | | | | | | | | | When using a map to represent a set, performance degrades due to the increased number of calls of runtime.mapassign. Especially when the number of symbols is large, as in compiling a pattern that contains character properties like \p{Letter}, adding elements to the set alone may take several tens of seconds of CPU time. Therefore, this commit solves this problem by changing the representation of the set from map to array.
* Add lex modeRyo Nihei2021-05-044-211/+504
| | | | | | | | | | lex mode is a feature that separates transition tables per each mode. The lexer starts from an initial state indicated by `initial_state` field and transitions between modes according to `push` and `pop` fields. The initial state will always be `default`. Currently, maleeni doesn't provide the ability to change the initial state. You can specify the modes of each lex entry using `modes` field. When the mode isn't indicated explicitly, the entries have `default` mode.
* Generate an invalid token from incompleted input.Ryo Nihei2021-05-021-0/+5
| | | | When the lexer's buffer has unaccepted data and reads the EOF, the lexer treats the buffered data as an invalid token.
* Fix parser to recognize property expressions in bracket expressionsRyo Nihei2021-05-022-0/+14
|