Zachary Snow
7e9fb3379c
refactor internal frontend interface
...
- add unified frontend configuration record to make adding future
options easier
- use ExceptT throughout, rather than using runExceptT at internal
boundaries
2021-08-06 22:23:34 -06:00
Zachary Snow
91e3ac0fb1
normalize trailing whitespace in escaped identifiers
2021-07-08 17:17:45 -04:00
Zachary Snow
25fe57f75a
fix lexing of whitespace in number literals
...
In places where an optional space was previously allowed, allow any
number of arbitrary whitespace characters, in line with the spec and
other tools.
2021-07-08 13:53:29 -04:00
Zachary Snow
c39371c48a
simplify and optimize lexing
2020-12-10 13:33:06 -07:00
Zachary Snow
82290b16ee
simplify lexer character position lookup
2020-11-27 14:29:59 -07:00
Zachary Snow
d88c516d33
enhanced handling of number literals
...
- number literals are parsed rather than stored as strings
- fix array query functions used on non-trivial number literals
- more efficient expression simplification recursion
- expanded constant folding scenarios
2020-07-12 15:06:27 -06:00
Zachary Snow
790312d25d
vim modelines for Lex.x and Parse.y
2020-05-06 19:03:32 -04:00
Zachary Snow
3c08767b63
redesigned preprocessor and lexer
2020-02-06 23:33:13 -05:00
Zachary Snow
1a9068409e
forbid illegal macro names
2020-02-01 16:42:25 -05:00
Zachary Snow
9f180f91e5
improve `line error message
2020-01-27 19:23:36 -05:00
Zachary Snow
ad98c14547
fix handling of macros at EOF ( resolves #62 )
2020-01-27 19:18:58 -05:00
Zachary Snow
cf4c2a5491
expanded support for macros in preprocessor directives
2020-01-14 23:19:39 -05:00
Zachary Snow
ba79b17bd9
pragma and line directive validation
2019-12-09 21:45:11 -05:00
Zachary Snow
58ad1feab1
allow reading from stdin
2019-11-19 23:29:19 -05:00
Zachary Snow
336b180d74
lexer handles carriage returns ( closes #51 )
2019-10-19 13:27:29 -04:00
Zachary Snow
fea5ff44eb
coalesce tokens across nested macros
2019-10-11 22:53:08 -04:00
Zachary Snow
d86f8535a0
support for begin_keywords directive
2019-10-11 19:32:10 -04:00
Zachary Snow
b660cfbd4e
allow tabs in preprocessor directives
2019-10-10 22:10:59 -04:00
Zachary Snow
167c65db11
pass through downstream compiler directives
2019-10-10 20:53:49 -04:00
Zachary Snow
6d79e0b491
updated number literals
2019-10-10 19:01:09 -04:00
Zachary Snow
149d16d8fc
add support for `line directive
2019-10-10 19:00:49 -04:00
Zachary Snow
9880885412
Revert "allow escaped newline in macro arguments"
...
This reverts commit ba7fbd5506 .
2019-10-09 00:36:23 -04:00
Zachary Snow
a1735ffef7
fix lexing identifiers and numbers across macro boundaries
2019-10-06 15:16:48 -04:00
Zachary Snow
ba7fbd5506
allow escaped newline in macro arguments
2019-10-03 23:29:49 -04:00
Zachary Snow
ceb384f680
support multiline strings
2019-09-30 23:53:18 -04:00
Henner Zeller
e2f044ec4a
Place <file>:<line>:<col> first in an error message
...
This is the same as most compilers (e.g. gcc and clang) but also
verilog tools (e.g. yosys) output error mesasge in a standardized form.
This form can immediately be parsed by IDE tools that can jumping
through a list of error messages, placing the cursor at the given
file position.
This change simply re-arranges the error message printing to conform to that
standard.
Signed-off-by: Henner Zeller <h.zeller@acm.org>
2019-09-18 19:16:37 -04:00
Zachary Snow
bdafb60dec
lexical and parse errors print to stderr
2019-09-17 19:34:56 -04:00
Zachary Snow
2ca8a022ad
support and conversion for -> and <->
2019-09-15 13:55:40 -04:00
Zachary Snow
f5d6683422
generalization of array dimension(s) system functions
2019-09-14 12:38:26 -04:00
Zachary Snow
6ddf782383
drop timeunit and timescale ( closes #31 )
2019-09-11 21:44:57 -04:00
Zachary Snow
33bea9e694
added remaining SV keywords
2019-09-04 21:02:02 -04:00
Zachary Snow
89e4f2a248
allow newlines before left paren of macro arguments
2019-08-11 17:55:42 -04:00
Zachary Snow
8a67a91166
added language support for (untagged) unions
2019-08-08 23:12:06 -04:00
Zachary Snow
90bc30d4be
add --oneunit, which treats all input files as being part of one compilation unit
2019-08-05 22:00:04 -04:00
Zachary Snow
d01df6110b
preliminary language support for packages
2019-04-23 15:53:51 -04:00
Zachary Snow
369e9f2f19
updated Stack snapshot; handled pattern matching failure issues introduced in GHC 8.6
2019-04-16 15:52:38 -04:00
Zachary Snow
6d0f7dd0a7
significantly stronger support, and proper handling of assertions
2019-04-03 19:08:30 -04:00
Zachary Snow
e79c95c5f0
some cleanup throughout the SystemVerilog module
2019-04-03 13:45:43 -04:00
Zachary Snow
39f377e022
lexer has useful tagging of tokens from a macro expansion
2019-04-03 13:05:33 -04:00
Zachary Snow
2f91e25aa2
more lexer tests
2019-04-03 00:16:30 -04:00
Zachary Snow
a18270a3bd
many lexer fixes
...
- added support for macros with default arguments
- fixed bug where nested preprocessor conditionals would not be skipped
- macro expansion respects escaped quotation marks
- macro expansion considers whole identifiers, rather than substituting in wildly
2019-04-02 23:05:42 -04:00
Zachary Snow
c53b39319d
added support and conversion handling of the $bits system function
...
This also entailed further fleshing out the expression traversal helper
to cover expressions in generate blocks, which could, of course, use
$bits.
2019-04-02 00:16:09 -04:00
Zachary Snow
317994ed3a
faster lexing by storing tokens in reverse order
2019-03-30 03:21:56 -04:00
Zachary Snow
a432d75939
additional SystemVerilog language support
...
- unique0 and priority
- uniqueness on if statements
- preliminary discard-only parsing of assertions
- parameters with alias typenames
2019-03-30 00:47:42 -04:00
Zachary Snow
17fd6f8ce5
proper handling of single-line comments in macro definitions
2019-03-29 19:08:44 -04:00
Zachary Snow
c4449fd9ca
better support for macros with arguments
2019-03-29 18:55:45 -04:00
Zachary Snow
e49cb3536e
beginning work to support macros with arguments; lex posn fix
2019-03-29 17:02:49 -04:00
Zachary Snow
5dc049b9e5
cleanup pass over Lex.x
2019-03-29 13:59:51 -04:00
Zachary Snow
d578aee5d9
conflate the preprocessor and lexer
...
This should make it much easier to add support for ``, `", macros with
arguments, etc., in the future.
2019-03-29 05:33:17 -04:00
Zachary Snow
e69895af54
initial setup for combining pre-processor and lexer
2019-03-29 01:10:46 -04:00