Skip to content

Commit

Permalink
Merge pull request #67 from dekarrin/ghi016-selfhosting
Browse files Browse the repository at this point in the history
Ghi016 selfhosting
  • Loading branch information
dekarrin committed Apr 4, 2023
2 parents e450431 + 1fcfd78 commit 45f6bba
Show file tree
Hide file tree
Showing 6 changed files with 90 additions and 81 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

/testout
/ictcc
/.sim

# mac
.DS_Store
Expand All @@ -11,7 +12,6 @@
/.vscode
/.idea


# default frontend generation
/fe
# we are a go mod household tyvm
Expand Down
2 changes: 1 addition & 1 deletion cmd/ictcc/version.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package main

const (
Version = "0.5.3"
Version = "0.6.0"
)

func GetVersionString() string {
Expand Down
20 changes: 10 additions & 10 deletions fishi.md
Original file line number Diff line number Diff line change
Expand Up @@ -415,7 +415,7 @@ The following gives the Syntax-directed translations for the FISHI language.
)
%symbol {PROD-ACTION-LIST}
->: {^}.value = prod_actions_list_append(
->: {^}.value = prod_action_list_append(
{PROD-ACTION-LIST}.value
{PROD-ACTION}.value
)
Expand All @@ -434,8 +434,8 @@ The following gives the Syntax-directed translations for the FISHI language.
->: {^}.value = make_semantic_action({1}.$text, {1}.$ft, {3}.$text, {3}.$ft, {4}.value)
%symbol {SEM-ACTION-LIST}
->: {^}.value = attr_ref_list_append({0}.value, {1}.value)
->: {^}.value = attr_ref_list_start({0}.value, {0}.$ft)
->: {^}.value = semantic_action_list_append({0}.value, {1}.value)
->: {^}.value = semantic_action_list_start({0}.value)
%symbol {ASYM}
->: {^}.value = get_nonterminal({0}.$text)
Expand Down Expand Up @@ -534,23 +534,23 @@ The following gives the Syntax-directed translations for the FISHI language.
->: {^}.state = make_state_ins({1}.value, {1}.$ft)
%symbol {ID-EXPR}
->: {^}.value = identity({0}.$text)
->: {^}.value = identity({0}.$text)
->: {^}.value = ident({0}.$text)
->: {^}.value = ident({0}.$text)
%symbol {TEXT}
->: {^}.value = append_strings_trimmed({0}.value, {1}.value)
->: {^}.value = identity({0}.value)
->: {^}.value = identity({0}.value)
->: {^}.value = ident({0}.value)
->: {^}.value = ident({0}.value)
%symbol {TEXT-ELEM-LIST}
->: {^}.value = append_strings({0}.value, {1}.value)
->: {^}.value = identity({0}.value)
->: {^}.value = ident({0}.value)
%symbol {NL-TEXT-ELEM}
->: {^}.value = interpret_escape({0}.$text)
->: {^}.value = identity({0}.$text)
->: {^}.value = ident({0}.$text)
%symbol {TEXT-ELEM}
->: {^}.value = interpret_escape({0}.$text)
->: {^}.value = identity({0}.$text)
->: {^}.value = ident({0}.$text)
```
13 changes: 11 additions & 2 deletions fishi/codegen.go
Original file line number Diff line number Diff line change
Expand Up @@ -238,8 +238,13 @@ func GenerateTestCompiler(spec Spec, md SpecMetadata, p ictiobus.Parser, hooksPk
return strings.ToLower(s)
}

// create a temporary directory to save things in
tmpDir, err := os.MkdirTemp("", fmt.Sprintf("ictcc-test-%s", safePkgIdent(md.Language)))
// create a directory to save things in
tmpDir := ".sim"
err = os.RemoveAll(tmpDir)
if err != nil {
return gci, fmt.Errorf("removing old temp dir: %w", err)
}
err = os.MkdirAll(tmpDir, 0766)
if err != nil {
return gci, fmt.Errorf("creating temp dir: %w", err)
}
Expand Down Expand Up @@ -615,8 +620,12 @@ func createTemplateFillData(spec Spec, md SpecMetadata, pkgName string, fqIRType
bData.Productions = append(bData.Productions, sdtsData)
}
// now add all the bindings to the data in order
// (first one is the default IR attribute)
for _, b := range bindingOrder {
data.Bindings = append(data.Bindings, *b)
if data.IRAttribute == "" {
data.IRAttribute = b.Productions[0].Attribute
}
}

// done, return finished data
Expand Down
8 changes: 4 additions & 4 deletions fishi/fe/bootstrap_sdts.go
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ func bootstrapSDTSActionsBlockAST(sdts ictiobus.SDTS) {
sdts.BindSynthesizedAttribute(
"ACTIONS-BLOCK", []string{TCHeaderActions.ID(), "ACTIONS-CONTENT"},
"ast",
"make_actions_block",
"make_ablock",
[]trans.AttrRef{
{Relation: trans.NodeRelation{Type: trans.RelSymbol, Index: 1}, Name: "ast"},
},
Expand All @@ -134,7 +134,7 @@ func bootstrapSDTSTokensBlockAST(sdts ictiobus.SDTS) {
sdts.BindSynthesizedAttribute(
"TOKENS-BLOCK", []string{TCHeaderTokens.ID(), "TOKENS-CONTENT"},
"ast",
"make_tokens_block",
"make_tblock",
[]trans.AttrRef{
{Relation: trans.NodeRelation{Type: trans.RelSymbol, Index: 1}, Name: "ast"},
},
Expand All @@ -146,7 +146,7 @@ func bootstrapSDTSGrammarBlockAST(sdts ictiobus.SDTS) {
sdts.BindSynthesizedAttribute(
"GRAMMAR-BLOCK", []string{TCHeaderGrammar.ID(), "GRAMMAR-CONTENT"},
"ast",
"make_grammar_block",
"make_gblock",
[]trans.AttrRef{
{Relation: trans.NodeRelation{Type: trans.RelSymbol, Index: 1}, Name: "ast"},
},
Expand Down Expand Up @@ -185,7 +185,7 @@ func bootstrapSDTSActionsContentAST(sdts ictiobus.SDTS) {
sdts.BindSynthesizedAttribute(
"ACTIONS-CONTENT", []string{"SYMBOL-ACTIONS-LIST"},
"ast",
"actions_content_blocks_start_symbol_actions_list",
"actions_content_blocks_start_sym_actions",
[]trans.AttrRef{
{Relation: trans.NodeRelation{Type: trans.RelSymbol, Index: 0}, Name: "value"},
},
Expand Down
126 changes: 63 additions & 63 deletions fishi/syntax/hooks.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,69 +21,69 @@ const (

var (
HooksTable = map[string]trans.AttributeSetter{
"make_fishispec": sdtsFnMakeFishispec,
"block_list_append": sdtsFnBlockListAppend,
"block_list_start": sdtsFnBlockListStart,
"make_grammar_block": sdtsFnMakeGrammarBlock,
"make_tokens_block": sdtsFnMakeTokensBlock,
"make_actions_block": sdtsFnMakeActionsBlock,
"grammar_content_blocks_start_rule_list": sdtsFnGrammarContentBlocksStartRuleList,
"tokens_content_blocks_start_entry_list": sdtsFnTokensContentBlocksStartEntryList,
"actions_content_blocks_start_symbol_actions_list": sdtsFnActionsContentBlocksStartSymbolActionsList,
"actions_content_blocks_prepend": sdtsFnActionsContentBlocksPrepend,
"tokens_content_blocks_prepend": sdtsFnTokensContentBlocksPrepend,
"grammar_content_blocks_prepend": sdtsFnGrammarContentBlocksPrepend,
"make_prod_action": sdtsFnMakeProdAction,
"make_symbol_actions": sdtsFnMakeSymbolActions,
"make_state_ins": sdtsFnMakeStateIns,
"make_grammar_content_node": sdtsFnMakeGrammarContentNode,
"make_actions_content_node": sdtsFnMakeActionsContentNode,
"make_tokens_content_node": sdtsFnMakeTokensContentNode,
"trim_string": sdtsFnTrimString,
"make_discard_option": sdtsFnMakeDiscardOption,
"make_stateshift_option": sdtsFnMakeStateshiftOption,
"make_human_option": sdtsFnMakeHumanOption,
"make_token_option": sdtsFnMakeTokenOption,
"make_priority_option": sdtsFnMakePriorityOption,
"ident": sdtsFnIdentity,
"interpret_escape": sdtsFnInterpretEscape,
"append_strings": sdtsFnAppendStrings,
"append_strings_trimmed": sdtsFnAppendStringsTrimmed,
"get_nonterminal": sdtsFnGetNonterminal,
"get_int": sdtsFnGetInt,
"get_terminal": sdtsFnGetTerminal,
"rule_list_append": sdtsFnRuleListAppend,
"entry_list_append": sdtsFnEntryListAppend,
"actions_state_block_list_append": sdtsFnActionsStateBlockListAppend,
"tokens_state_block_list_append": sdtsFnTokensStateBlockListAppend,
"grammar_state_block_list_append": sdtsFnGrammarStateBlockListAppend,
"symbol_actions_list_append": sdtsFnSymbolActionsListAppend,
"prod_action_list_append": sdtsFnProdActionListAppend,
"semantic_action_list_append": sdtsFnSemanticActionListAppend,
"attr_ref_list_append": sdtsFnAttrRefListAppend,
"attr_ref_list_start": sdtsFnAttrRefListStart,
"get_attr_ref": sdtsFnGetAttrRef,
"make_semantic_action": sdtsFnMakeSemanticAction,
"make_prod_specifier_next": sdtsFnMakeProdSpecifierNext,
"make_prod_specifier_index": sdtsFnMakeProdSpecifierIndex,
"make_prod_specifier_literal": sdtsFnMakeProdSpecifierLiteral,
"prod_action_list_start": sdtsFnProdActionListStart,
"semantic_action_list_start": sdtsFnSemanticActionListStart,
"rule_list_start": sdtsFnRuleListStart,
"grammar_state_block_list_start": sdtsFnGrammarStateBlockListStart,
"tokens_state_block_list_start": sdtsFnTokensStateBlockListStart,
"actions_state_block_list_start": sdtsFnActionsStateBlockListStart,
"symbol_actions_list_start": sdtsFnSymbolActionsListStart,
"entry_list_start": sdtsFnEntryListStart,
"string_list_append": sdtsFnStringListAppend,
"token_opt_list_start": sdtsFnTokenOptListStart,
"token_opt_list_append": sdtsFnTokenOptListAppend,
"string_list_start": sdtsFnStringListStart,
"string_list_list_start": sdtsFnStringListListStart,
"string_list_list_append": sdtsFnStringListListAppend,
"epsilon_string_list": sdtsFnEpsilonStringList,
"make_rule": sdtsFnMakeRule,
"make_token_entry": sdtsFnMakeTokenEntry,
"make_fishispec": sdtsFnMakeFishispec,
"block_list_append": sdtsFnBlockListAppend,
"block_list_start": sdtsFnBlockListStart,
"make_gblock": sdtsFnMakeGrammarBlock,
"make_tblock": sdtsFnMakeTokensBlock,
"make_ablock": sdtsFnMakeActionsBlock,
"grammar_content_blocks_start_rule_list": sdtsFnGrammarContentBlocksStartRuleList,
"tokens_content_blocks_start_entry_list": sdtsFnTokensContentBlocksStartEntryList,
"actions_content_blocks_start_sym_actions": sdtsFnActionsContentBlocksStartSymbolActionsList,
"actions_content_blocks_prepend": sdtsFnActionsContentBlocksPrepend,
"tokens_content_blocks_prepend": sdtsFnTokensContentBlocksPrepend,
"grammar_content_blocks_prepend": sdtsFnGrammarContentBlocksPrepend,
"make_prod_action": sdtsFnMakeProdAction,
"make_symbol_actions": sdtsFnMakeSymbolActions,
"make_state_ins": sdtsFnMakeStateIns,
"make_grammar_content_node": sdtsFnMakeGrammarContentNode,
"make_actions_content_node": sdtsFnMakeActionsContentNode,
"make_tokens_content_node": sdtsFnMakeTokensContentNode,
"trim_string": sdtsFnTrimString,
"make_discard_option": sdtsFnMakeDiscardOption,
"make_stateshift_option": sdtsFnMakeStateshiftOption,
"make_human_option": sdtsFnMakeHumanOption,
"make_token_option": sdtsFnMakeTokenOption,
"make_priority_option": sdtsFnMakePriorityOption,
"ident": sdtsFnIdentity,
"interpret_escape": sdtsFnInterpretEscape,
"append_strings": sdtsFnAppendStrings,
"append_strings_trimmed": sdtsFnAppendStringsTrimmed,
"get_nonterminal": sdtsFnGetNonterminal,
"get_int": sdtsFnGetInt,
"get_terminal": sdtsFnGetTerminal,
"rule_list_append": sdtsFnRuleListAppend,
"entry_list_append": sdtsFnEntryListAppend,
"actions_state_block_list_append": sdtsFnActionsStateBlockListAppend,
"tokens_state_block_list_append": sdtsFnTokensStateBlockListAppend,
"grammar_state_block_list_append": sdtsFnGrammarStateBlockListAppend,
"symbol_actions_list_append": sdtsFnSymbolActionsListAppend,
"prod_action_list_append": sdtsFnProdActionListAppend,
"semantic_action_list_append": sdtsFnSemanticActionListAppend,
"attr_ref_list_append": sdtsFnAttrRefListAppend,
"attr_ref_list_start": sdtsFnAttrRefListStart,
"get_attr_ref": sdtsFnGetAttrRef,
"make_semantic_action": sdtsFnMakeSemanticAction,
"make_prod_specifier_next": sdtsFnMakeProdSpecifierNext,
"make_prod_specifier_index": sdtsFnMakeProdSpecifierIndex,
"make_prod_specifier_literal": sdtsFnMakeProdSpecifierLiteral,
"prod_action_list_start": sdtsFnProdActionListStart,
"semantic_action_list_start": sdtsFnSemanticActionListStart,
"rule_list_start": sdtsFnRuleListStart,
"grammar_state_block_list_start": sdtsFnGrammarStateBlockListStart,
"tokens_state_block_list_start": sdtsFnTokensStateBlockListStart,
"actions_state_block_list_start": sdtsFnActionsStateBlockListStart,
"symbol_actions_list_start": sdtsFnSymbolActionsListStart,
"entry_list_start": sdtsFnEntryListStart,
"string_list_append": sdtsFnStringListAppend,
"token_opt_list_start": sdtsFnTokenOptListStart,
"token_opt_list_append": sdtsFnTokenOptListAppend,
"string_list_start": sdtsFnStringListStart,
"string_list_list_start": sdtsFnStringListListStart,
"string_list_list_append": sdtsFnStringListListAppend,
"epsilon_string_list": sdtsFnEpsilonStringList,
"make_rule": sdtsFnMakeRule,
"make_token_entry": sdtsFnMakeTokenEntry,
}
)

Expand Down

0 comments on commit 45f6bba

Please sign in to comment.