Commit Graph

255 Commits

Author SHA1 Message Date
Will Hawkins aa12974dd6 compiler: Flesh Out CST Visitor Framework
As a use case, use it to implement text serialization
of the CST.

Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-06-15 23:37:14 -04:00
Will Hawkins d22776b018 compiler: Refactor Language Element Tags
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-06-15 21:16:52 -04:00
Will Hawkins d7022725ed compiler: Refactor Type Parsers
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-06-15 21:16:23 -04:00
Will Hawkins 6c23cf7458 Refactor P4Compiler to P4Parser
Continuous Integration / Grammar Tests (push) Successful in 36s
Continuous Integration / Library Format Tests (push) Successful in 1m46s
Continuous Integration / Library Tests (push) Successful in 4m23s
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-06-12 23:23:54 -04:00
Will Hawkins e17533dfc8 Make Formatter Happy
Continuous Integration / Grammar Tests (push) Successful in 36s
Continuous Integration / Library Format Tests (push) Successful in 1m19s
Continuous Integration / Library Tests (push) Successful in 3m51s
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-06-12 06:34:57 -04:00
Will Hawkins fe88e447a9 compiler: Add LICENSE to Visitor.swift
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-06-12 06:31:21 -04:00
Will Hawkins 3769a78b92 testing: Add Back Source Code Tests
Continuous Integration / Grammar Tests (push) Successful in 39s
Continuous Integration / Library Format Tests (push) Failing after 1m15s
Continuous Integration / Library Tests (push) Successful in 4m12s
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-06-12 06:30:21 -04:00
Will Hawkins b9ff228362 Start Rewrite
Continuous Integration / Grammar Tests (push) Successful in 3m54s
Continuous Integration / Library Format Tests (push) Failing after 4m49s
Continuous Integration / Library Tests (push) Successful in 7m40s
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-06-12 06:24:53 -04:00
Will Hawkins 6908d9a91d compiler: Clean Up Warnings In Compiler
Continuous Integration / Grammar Tests (push) Successful in 37s
Continuous Integration / Library Format Tests (push) Successful in 1m47s
Continuous Integration / Library Tests (push) Successful in 4m51s
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-29 17:47:05 -04:00
Will Hawkins 6882a32858 Make Formatter Happy
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-29 17:37:42 -04:00
Will Hawkins 3ee1eab2f8 compiler: Parser Compile Should Match Compile Protocol
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-29 17:37:26 -04:00
Will Hawkins d2797e1acc compiler: Use Macro to Derive CompilableStatement Implementations
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-29 17:36:44 -04:00
Will Hawkins 4f6de341cc compiler: Refactor Transition Statement Compilation
Make it follow the standard protocol(s). Unfortunately that means
that some additional information will have to be carried in
the compilation context. It seems like a decent tradeoff -- but
it may be revisited in the future.

Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-29 17:33:23 -04:00
Will Hawkins 297288e2b0 grammar: Update Instantiation Grammar Tests
Continuous Integration / Grammar Tests (push) Successful in 39s
Continuous Integration / Library Format Tests (push) Successful in 1m30s
Continuous Integration / Library Tests (push) Successful in 4m38s
A change to the grammar for parsing instantiations was not
accompanied by a change to the tests.

Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-29 17:12:38 -04:00
Will Hawkins 44e93e4cda compiler, runtime: Begin Runtime Refactor
Continuous Integration / Grammar Tests (push) Failing after 39s
Continuous Integration / Library Format Tests (push) Successful in 1m46s
Continuous Integration / Library Tests (push) Successful in 4m38s
Ultimately, the goal is to completely separate the compilation from
the runtime to make it possible to have the interpreter/evaluator
be "just another" entity that can perform meaningful work when
given a parsed GP4 program.

Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-29 08:41:54 -04:00
Will Hawkins 18461a9215 compiler: Remove Too-Early Instatiation Reference (3)
Continuous Integration / Library Format Tests (push) Successful in 1m16s
Continuous Integration / Library Tests (push) Successful in 4m32s
Continuous Integration / Grammar Tests (push) Successful in 38s
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-27 13:39:26 -04:00
Will Hawkins ecc38096b8 compiler: Remove Too-Early Instatiation Reference (2)
Continuous Integration / Grammar Tests (push) Successful in 38s
Continuous Integration / Library Format Tests (push) Successful in 1m18s
Continuous Integration / Library Tests (push) Failing after 4m32s
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-27 13:29:24 -04:00
Will Hawkins c8d4d4fc65 compiler: Remove Too-Early Instatiation Reference
Continuous Integration / Grammar Tests (push) Successful in 38s
Continuous Integration / Library Format Tests (push) Successful in 1m41s
Continuous Integration / Library Tests (push) Failing after 4m29s
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-27 13:22:59 -04:00
Will Hawkins 294f76acd4 compiler: Refactor Compiler To Remove Ambiguities
Continuous Integration / Grammar Tests (push) Successful in 39s
Continuous Integration / Library Format Tests (push) Successful in 1m51s
Continuous Integration / Library Tests (push) Failing after 4m44s
There were significant overlaps in the names of data structures
between the compiler and the language that made it necessary
to litter the code with P4Lang.xxxx. This refactor removes that
requirement in most places (Parser is ambiguous wherever TreeSitter
is used -- cannot avoid that!)

Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-27 12:59:29 -04:00
Will Hawkins 61d8f601e8 compiler, language, runtime: Separate Parser Type From Instances
Continuous Integration / Grammar Tests (push) Successful in 4m2s
Continuous Integration / Library Format Tests (push) Successful in 5m0s
Continuous Integration / Library Tests (push) Successful in 8m1s
In P4, parsers are considered types. Those parsers are instantiated.
The instantiated parsers are values. Previously, gp4 treated a parser
type and a parser value as identical. This PR makes that difference
clear _and_ sets the stage for the future.

TODO: Make the same distinction between control and action types and
values.

Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-27 05:41:23 -04:00
Will Hawkins 925f20a13b Make Formatter Happy
Continuous Integration / Grammar Tests (push) Successful in 37s
Continuous Integration / Library Format Tests (push) Successful in 1m49s
Continuous Integration / Library Tests (push) Successful in 4m50s
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-22 20:42:50 -04:00
Will Hawkins 97a672bd6d compiler: Type Check All Binary Operators
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-22 20:42:35 -04:00
Will Hawkins bc51b4e280 compiler: Reworked Preprocessor To Support Better Error Messages
Can now support showing the trail of includes in an error
message.

Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-22 20:41:43 -04:00
Will Hawkins 041009a22e compiler: Track/Report Relative Paths Names
Continuous Integration / Grammar Tests (push) Successful in 37s
Continuous Integration / Library Format Tests (push) Successful in 1m22s
Continuous Integration / Library Tests (push) Successful in 4m23s
When the user gives relative path names for p4 files, report
those in error messages (etc.). The SourceManager can/does
resolve those to absolute path names.

Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-22 04:27:37 -04:00
Will Hawkins 0cb50e2e2f testing: Remove .swift-version
Continuous Integration / Library Format Tests (push) Successful in 1m12s
Continuous Integration / Library Tests (push) Failing after 4m18s
Continuous Integration / Grammar Tests (push) Successful in 40s
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-22 03:54:36 -04:00
Will Hawkins 7fc319d9bc testing: Debug Format CI Test Failure (2)
Continuous Integration / Grammar Tests (push) Successful in 37s
Continuous Integration / Library Format Tests (push) Failing after 1m17s
Continuous Integration / Library Tests (push) Has been cancelled
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-22 03:51:52 -04:00
Will Hawkins 0c8b9e88cf testing: Debug Format CI Test Failure
Continuous Integration / Grammar Tests (push) Successful in 37s
Continuous Integration / Library Format Tests (push) Failing after 1m37s
Continuous Integration / Library Tests (push) Failing after 4m15s
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-22 02:39:12 -04:00
Will Hawkins e53c32f802 compiler, cli: Support Nice Compilation Error Messages
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-22 02:38:47 -04:00
Will Hawkins 5845cb75cc testing: Test For Controls Using Keys From Structs
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-22 02:35:34 -04:00
Will Hawkins 24b0f0284a language: Check For Incorrect Order For Action Parameters
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-22 02:34:51 -04:00
Will Hawkins a1908cc077 Make Formatter Happy
Continuous Integration / Library Tests (push) Successful in 4m8s
Continuous Integration / Grammar Tests (push) Successful in 36s
Continuous Integration / Library Format Tests (push) Failing after 1m12s
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-22 00:27:17 -04:00
Will Hawkins 382f3de00a testing: Use ProcessInfo As Static Variable
Continuous Integration / Grammar Tests (push) Successful in 37s
Continuous Integration / Library Format Tests (push) Failing after 1m40s
Continuous Integration / Library Tests (push) Successful in 4m12s
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-22 00:19:05 -04:00
Will Hawkins 8f9fbb86bf testing: Cli Tests Are Now Integrated
Continuous Integration / Grammar Tests (push) Successful in 37s
Continuous Integration / Library Format Tests (push) Failing after 1m27s
Continuous Integration / Library Tests (push) Failing after 4m14s
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-22 00:11:07 -04:00
Will Hawkins 16a798cc39 testing: Update to Latest ABI Protocol for Test Discovery
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-22 00:10:10 -04:00
Will Hawkins 017d5670c0 Make Formatter Happy
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-21 22:42:55 -04:00
Will Hawkins d60465e669 testing: Update CliTest Support.
And add tests for Cli preprocessing.

Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-21 22:41:00 -04:00
Will Hawkins b3ca30541a cli: Add a Preprocess Mode
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-21 22:40:14 -04:00
Will Hawkins 022dc94fde Commit To Swift Version 6.2.4
Continuous Integration / Grammar Tests (push) Successful in 38s
Continuous Integration / Library Format Tests (push) Failing after 1m20s
Continuous Integration / Library Tests (push) Failing after 4m34s
Continuous Integration / Cli Tests (push) Successful in 4m47s
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-21 22:39:36 -04:00
Will Hawkins 7a2c55cc51 testing: Implement Macros For Cli Testing
Continuous Integration / Grammar Tests (push) Successful in 4m5s
Continuous Integration / Library Tests (push) Failing after 8m19s
Continuous Integration / Cli Tests (push) Successful in 6m36s
Continuous Integration / Library Format Tests (push) Successful in 5m0s
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-20 17:53:31 -04:00
Will Hawkins 3cff82fd5c runtime: Remove Too-Soon Dependency on Protobuf Work
Continuous Integration / Grammar Tests (push) Successful in 4m18s
Continuous Integration / Library Format Tests (push) Successful in 7m30s
Continuous Integration / Library Tests (push) Successful in 10m36s
Continuous Integration / Cli Tests (push) Successful in 7m7s
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-18 23:38:12 -04:00
Will Hawkins a7d8fd1304 grammar,compiler: Add Support For Fixed-Width Integers
Continuous Integration / Grammar Tests (push) Successful in 4m13s
Continuous Integration / Library Format Tests (push) Successful in 5m17s
Continuous Integration / Library Tests (push) Failing after 8m34s
Continuous Integration / Cli Tests (push) Failing after 4m40s
Distinguishing between signed and unsigned fixed-width integer
types must still be done.

Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-18 06:53:22 -04:00
Will Hawkins cbebcae20a language: Remove Attributed Type
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-18 05:06:28 -04:00
Will Hawkins 979fa69ab8 Rename Project (again) And Describe Purpose
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-18 04:01:28 -04:00
Will Hawkins 12fa43d9f9 common, codegen: Implement Visitor And Use For CodeGen
Continuous Integration / Grammar Tests (push) Successful in 4m6s
Continuous Integration / Library Format Tests (push) Successful in 5m5s
Continuous Integration / Library Tests (push) Successful in 9m0s
Continuous Integration / Cli Tests (push) Successful in 4m57s
Implement a generic visitor for components of a P4 program and use
it to start P4 code generation (according to the behavioral model).

Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-15 08:14:24 -04:00
Will Hawkins f1f20e96a2 testing: Do Not Build Separately in Library Tests
Continuous Integration / Grammar Tests (push) Successful in 35s
Continuous Integration / Library Format Tests (push) Successful in 1m7s
Continuous Integration / Library Tests (push) Successful in 4m1s
Continuous Integration / Cli Tests (push) Successful in 5m47s
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-11 09:06:59 -04:00
Will Hawkins 49eef16c19 testing: Add Basic Support for Cli Testing
Continuous Integration / Grammar Tests (push) Successful in 3m42s
Continuous Integration / Library Format Tests (push) Successful in 4m33s
Continuous Integration / Cli Tests (push) Successful in 4m18s
Continuous Integration / Library Tests (push) Successful in 9m39s
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-11 08:57:15 -04:00
Will Hawkins fccaf1aa92 cli: Initial _real_ Cli Work
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-11 08:56:38 -04:00
Will Hawkins 73b4f54bbe Make Formatter Happy
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-11 07:37:23 -04:00
Will Hawkins 0e2b13be93 compiler: Support Querying For Files In Preprocessed Code
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-11 07:37:23 -04:00
Will Hawkins f0f7a660a6 compiler: Add Ability to Annotate Preprocessed Source
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-05-11 07:37:18 -04:00