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
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
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
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
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
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
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
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
fccaf1aa92
cli: Initial _real_ Cli Work
...
Signed-off-by: Will Hawkins <hawkinsw@obs.cr >
2026-05-11 08:56:38 -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
Will Hawkins
a0c6b7730c
documentation: Document SourceCode-related structs
...
Signed-off-by: Will Hawkins <hawkinsw@obs.cr >
2026-05-11 07:22:17 -04:00
Will Hawkins
d28ccd79e4
common, compiler: Upgrade to SystemPackage
...
Continuous Integration / Grammar Tests (push) Successful in 35s
Continuous Integration / Library Format Tests (push) Successful in 1m16s
Continuous Integration / Library Tests (push) Successful in 4m11s
For cross-platform support.
Signed-off-by: Will Hawkins <hawkinsw@obs.cr >
2026-05-07 23:43:29 -04:00
Will Hawkins
754102d601
compiler: Add Preprocessor Support
...
TODO: Test that file names are properly tracked in included
files.
Signed-off-by: Will Hawkins <hawkinsw@obs.cr >
2026-05-07 23:06:41 -04:00
Will Hawkins
ce35761efa
Make Formatter Happy
...
Continuous Integration / Grammar Tests (push) Failing after 2m26s
Continuous Integration / Library Tests (push) Failing after 18s
Continuous Integration / Library Format Tests (push) Failing after 11s
Signed-off-by: Will Hawkins <hawkinsw@obs.cr >
2026-05-06 08:09:15 -04:00
Will Hawkins
d9133cf6a9
cli: Remove Darwin Dependency
...
Signed-off-by: Will Hawkins <hawkinsw@obs.cr >
2026-05-06 08:02:21 -04:00
Will Hawkins
dd0bbbe479
Make Formatter Happy
...
Continuous Integration / Grammar Tests (push) Failing after 5s
Continuous Integration / Library Tests (push) Failing after 5s
Continuous Integration / Library Format Tests (push) Failing after 6s
Signed-off-by: Will Hawkins <hawkinsw@obs.cr >
2026-05-04 22:25:51 -04:00
Will Hawkins
7a36ca32dd
compiler, runtime: Support Formatted Error Messages
...
Make it possible to output formatted error messages using a
flexible API that includes an ability to specify styles and
formatters.
Signed-off-by: Will Hawkins <hawkinsw@obs.cr >
2026-05-04 22:24:28 -04:00
Will Hawkins
783aac26c7
compiler: Use New Error API to Accumulate Errors
...
Signed-off-by: Will Hawkins <hawkinsw@obs.cr >
2026-05-04 22:23:52 -04:00
Will Hawkins
e4d6daa8fe
Make Formatter Happy
...
Signed-off-by: Will Hawkins <hawkinsw@obs.cr >
2026-05-04 11:31:50 -04:00
Will Hawkins
333270deee
cli: Add Initial Cli Work
...
Signed-off-by: Will Hawkins <hawkinsw@obs.cr >
2026-05-04 11:31:44 -04:00
Will Hawkins
73779d8074
common, testing: Add Formatting of Error Messages
...
Signed-off-by: Will Hawkins <hawkinsw@obs.cr >
2026-05-04 11:30:05 -04:00
Will Hawkins
3d4d26d07b
Make Formatter Happy
...
Continuous Integration / Library Format Tests (push) Has been cancelled
Continuous Integration / Grammar Tests (push) Failing after 1m30s
Continuous Integration / Library Tests (push) Failing after 8s
Signed-off-by: Will Hawkins <hawkinsw@obs.cr >
2026-05-04 10:34:33 -04:00
Will Hawkins
168d48fa7c
compiler, runtime: Refactor Errors
...
Signed-off-by: Will Hawkins <hawkinsw@obs.cr >
2026-05-04 10:34:07 -04:00
Will Hawkins
b49ec104e9
compiler, runtime: Make Default Values Optional
...
For types, make it optional to return a default value. While default
values for some types are meaningful, they are not meaningful for all
types (e.g., Action, Control, Parser, Parser state, etc.).
Signed-off-by: Will Hawkins <hawkinsw@obs.cr >
2026-05-04 08:35:33 -04:00
Will Hawkins
5cfe5532a2
compiler, runtime: Refactor P4DataType to P4Type
...
Now that the old P4Type is a P4QualifiedType, it makes sense to
rename the data type back to just type.
Signed-off-by: Will Hawkins <hawkinsw@obs.cr >
2026-05-04 07:37:48 -04:00
Will Hawkins
7c660b2b0c
compiler, runtime: Refactor P4Type to P4QualifiedType
...
Also, refer to the different pieces of the qualified type as
qualifiers and not attributes.
Signed-off-by: Will Hawkins <hawkinsw@obs.cr >
2026-05-04 07:29:51 -04:00
Will Hawkins
a84e778e79
Make Formatter Happy
...
Continuous Integration / Grammar Tests (push) Has been cancelled
Continuous Integration / Library Tests (push) Has been cancelled
Continuous Integration / Library Format Tests (push) Has been cancelled
Signed-off-by: Will Hawkins <hawkinsw@obs.cr >
2026-04-30 18:41:01 -04:00
Will Hawkins
ed976c7855
compiler, runtime: Initial Support For Calling Controls
...
Support calling (invoking) a Control. There is still plenty more to
do here, but we are off to a good start.
Signed-off-by: Will Hawkins <hawkinsw@obs.cr >
2026-04-30 18:39:52 -04:00
Will Hawkins
b934089fe7
common: Add a Table Hit/Miss Value/Type
...
When support for enums is added, we can replace this one-off.
Signed-off-by: Will Hawkins <hawkinsw@obs.cr >
2026-04-30 18:38:40 -04:00
Will Hawkins
bd262e5b73
runtime: Parameterize Runtime
...
Parameterize Runtime (nee ParserRuntime) so that it can run anything
that is LibraryCallable. TODO: Refactor its API -- left mostly as
it was because changing unit tests will be laborious.
2026-04-30 18:37:21 -04:00
Will Hawkins
b97aa1af72
parser, compiler: Support Table Actions
...
Continuous Integration / Grammar Tests (push) Has been cancelled
Continuous Integration / Library Tests (push) Has been cancelled
Continuous Integration / Library Format Tests (push) Has been cancelled
Signed-off-by: Will Hawkins <hawkinsw@obs.cr >
2026-04-30 05:38:29 -04:00
Will Hawkins
833979a5c9
Make Formatter Happy
...
Signed-off-by: Will Hawkins <hawkinsw@obs.cr >
2026-04-27 09:15:31 -04:00