Refactor P4Compiler to P4Parser
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
This commit is contained in:
@@ -16,50 +16,50 @@
|
||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
import Common
|
||||
import P4Compiler
|
||||
import P4Parser
|
||||
|
||||
public struct TextSerializer {
|
||||
public struct CSTTextSerializer {
|
||||
public init() {}
|
||||
}
|
||||
|
||||
public struct TextSerializerContext {
|
||||
public struct CSTTextSerializerContext {
|
||||
public let serialized: String
|
||||
|
||||
public init(_ serialized: String = "") {
|
||||
self.serialized = serialized
|
||||
}
|
||||
|
||||
public func append(_ a: String) -> TextSerializerContext {
|
||||
return TextSerializerContext(self.serialized + a)
|
||||
public func append(_ a: String) -> CSTTextSerializerContext {
|
||||
return CSTTextSerializerContext(self.serialized + a)
|
||||
}
|
||||
}
|
||||
|
||||
extension TextSerializer: ASTVisitor<TextSerializerContext> {
|
||||
extension CSTTextSerializer: CSTVisitor<CSTTextSerializerContext> {
|
||||
public func visit(
|
||||
node: P4Compiler.AST.BinaryOperatorExpression, driver: P4Compiler.ASTVisitorDriver,
|
||||
context: TextSerializerContext
|
||||
) -> Common.Result<TextSerializerContext> {
|
||||
node: CST.BinaryOperatorExpression, driver: CSTVisitorDriver,
|
||||
context: CSTTextSerializerContext
|
||||
) -> Common.Result<CSTTextSerializerContext> {
|
||||
return .Ok(context.append("Binary Operator Expression"))
|
||||
|
||||
}
|
||||
|
||||
public func visit(
|
||||
node: P4Compiler.AST.Literal, driver: P4Compiler.ASTVisitorDriver,
|
||||
context: TextSerializerContext
|
||||
) -> Common.Result<TextSerializerContext> {
|
||||
node: CST.Literal, driver: CSTVisitorDriver,
|
||||
context: CSTTextSerializerContext
|
||||
) -> Common.Result<CSTTextSerializerContext> {
|
||||
return .Ok(context.append("Literal Expression"))
|
||||
}
|
||||
|
||||
public func visit(
|
||||
node: P4Compiler.AST.Identifier, driver: P4Compiler.ASTVisitorDriver,
|
||||
context: TextSerializerContext
|
||||
) -> Common.Result<TextSerializerContext> {
|
||||
node: CST.Identifier, driver: CSTVisitorDriver,
|
||||
context: CSTTextSerializerContext
|
||||
) -> Common.Result<CSTTextSerializerContext> {
|
||||
return .Ok(context.append("Identifier Expression"))
|
||||
}
|
||||
|
||||
public func visit(
|
||||
node: P4Compiler.AST.Parser, driver: P4Compiler.ASTVisitorDriver, context: TextSerializerContext
|
||||
) -> Common.Result<TextSerializerContext> {
|
||||
node: CST.Parser, driver: CSTVisitorDriver, context: CSTTextSerializerContext
|
||||
) -> Common.Result<CSTTextSerializerContext> {
|
||||
var context = context.append("Identifier Expression")
|
||||
for s in node.states.states {
|
||||
switch driver.visit(state: s, visitor: self, context: context) {
|
||||
@@ -72,24 +72,23 @@ extension TextSerializer: ASTVisitor<TextSerializerContext> {
|
||||
}
|
||||
|
||||
public func visit(
|
||||
node: P4Compiler.AST.ParserStateDirectTransition, driver: P4Compiler.ASTVisitorDriver,
|
||||
context: TextSerializerContext
|
||||
) -> Common.Result<TextSerializerContext> {
|
||||
node: CST.ParserStateDirectTransition, driver: CSTVisitorDriver,
|
||||
context: CSTTextSerializerContext
|
||||
) -> Common.Result<CSTTextSerializerContext> {
|
||||
return .Ok(context.append("State: Direct Transition"))
|
||||
}
|
||||
|
||||
public func visit(
|
||||
node: P4Compiler.AST.ParserStateNoTransition, driver: P4Compiler.ASTVisitorDriver,
|
||||
context: TextSerializerContext
|
||||
) -> Common.Result<TextSerializerContext> {
|
||||
node: CST.ParserStateNoTransition, driver: CSTVisitorDriver,
|
||||
context: CSTTextSerializerContext
|
||||
) -> Common.Result<CSTTextSerializerContext> {
|
||||
return .Ok(context.append("State: No Transition"))
|
||||
}
|
||||
|
||||
public func visit(
|
||||
node: P4Compiler.AST.ParserStateSelectTransition, driver: P4Compiler.ASTVisitorDriver,
|
||||
context: TextSerializerContext
|
||||
) -> Common.Result<TextSerializerContext> {
|
||||
node: CST.ParserStateSelectTransition, driver: CSTVisitorDriver,
|
||||
context: CSTTextSerializerContext
|
||||
) -> Common.Result<CSTTextSerializerContext> {
|
||||
return .Ok(context.append("State: Direct Transition"))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user