Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

new AST symbol resolver pass #22

Closed
ppaulweber opened this issue Mar 31, 2017 · 2 comments
Closed

new AST symbol resolver pass #22

ppaulweber opened this issue Mar 31, 2017 · 2 comments
Assignees

Comments

@ppaulweber
Copy link
Contributor

ppaulweber commented Mar 31, 2017

    • please implement a new symbol resolver pass, which annotates unresolved/unknown identifier call nodes if it is a built-in, function, derived etc.
@ppaulweber ppaulweber added this to the prototype milestone Mar 31, 2017
@ppaulweber ppaulweber self-assigned this Mar 31, 2017
ppaulweber added a commit to casm-lang/libcasm-fe that referenced this issue Apr 1, 2017
* added a CallExpression::TargetType to std::string conversion function,
  once as a method and once as a static function
* is needed by sealangdotorg/sea#22
ppaulweber added a commit to casm-lang/libcasm-fe that referenced this issue Apr 1, 2017
* added new pass
  - required by ref sealangdotorg/sea#22
* performs recursively a symbol table creation
  - currently only for 'identifier' -> 'CallExpression::TargetType'
  - if during a recursive resolve an identifier cannot be found or
    resolved it gets memorized along with its node and processed
    later step
ppaulweber added a commit to casm-lang/libcasm-fe that referenced this issue Apr 2, 2017
* updated implementation
  - used new Logger abstraction to print source locations etc.
  - fixed comments from:
    0f965d2
  - ref sealangdotorg/sea#22
ppaulweber added a commit to casm-lang/libcasm-tc that referenced this issue Apr 3, 2017
* added some basic tests for the symbol resolver pass
  - related to ref sealangdotorg/sea#22
ppaulweber added a commit to casm-lang/libcasm-fe that referenced this issue Apr 3, 2017
* improved symbol resolving checks to include the arity of a symbol
  - e.g. function artiy, rule parameter arity, derived parameter arity,
  builtin argument arity, enumeration size (=arity), and for parameter
  (variable), let etc. the arity is by default zero (0)
  - related to ref sealangdotorg/sea#22
* discovers a bug in the initialization of the program function in the
  AST grammar specification
  - bug ref sealangdotorg/sea#24
ppaulweber added a commit to casm-lang/libcasm-fe that referenced this issue Apr 3, 2017
* implemented the missing TODO for the default program initialization,
  which lead to a error state in the new symbol resolver pass from ref
  sealangdotorg/sea#22
  - fixes sealangdotorg/sea#24
ppaulweber added a commit to casm-lang/libcasm-fe that referenced this issue Apr 3, 2017
* removed incorrect arity of enumeration type symbols and set it back to
  artiy of zero (0)
  - this will detect multiple enumeration definitions with the same name
  - related to ref sealangdotorg/sea#22
ppaulweber added a commit to casm-lang/libcasm-tc that referenced this issue Apr 4, 2017
* updated enumeration tests for symbol creation
  - related to sealangdotorg/sea#22
  - `enumeration.casm` works
  - `enumeration_uses.casm` still has grammar parser problems due to the
    `dot` in the identifier name
     - related to ref sealangdotorg/sea#19
ppaulweber added a commit to casm-lang/libcasm-fe that referenced this issue Apr 4, 2017
* added new 'Namespace' class to create symbol tables with nested
  namespaces etc.
  - related to ref sealangdotorg/sea#22
ppaulweber added a commit to casm-lang/libcasm-fe that referenced this issue Apr 4, 2017
* re-implemented the symbol resolving by splitting up the visitor in 2
  phases
  - first traverse and register all symbols and symbol namespaces
  - then annotate the AST and set the corresponding
    CallExpression::TargetType and register missing built-in symbols
  - related to ref sealangdotorg/sea#22
ppaulweber added a commit to casm-lang/libcasm-fe that referenced this issue Apr 4, 2017
* added new 'Namespace' class to create symbol tables with nested
  namespaces etc.
  - related to ref sealangdotorg/sea#22
ppaulweber added a commit to casm-lang/libcasm-fe that referenced this issue Apr 4, 2017
* re-implemented the symbol resolving by splitting up the visitor in 2
  phases
  - first traverse and register all symbols and symbol namespaces
  - then annotate the AST and set the corresponding
    CallExpression::TargetType and register missing built-in symbols
  - related to ref sealangdotorg/sea#22
ppaulweber added a commit to casm-lang/libcasm-fe that referenced this issue Apr 5, 2017
* added as pass data result the symbol table of the pass
  - related to ref sealangdotorg/sea#22
ppaulweber added a commit to casm-lang/libcasm-fe that referenced this issue Apr 5, 2017
* changed content of Namespace implementation from plain
  Ast::CallExpression::TargetType to a internal class 'Symbol', which
  contains besides the target type, the name, the definition and the
  artiy of a symbol
* updated the resolver pass
  - related to ref sealangdotorg/sea#22
* added new API function to the namespace implementation to lookup
  besides call expressions also basic types
  - needed and related to ref sealangdotorg/sea#20
ppaulweber added a commit to casm-lang/libcasm-fe that referenced this issue Apr 7, 2017
* integrated new identifier path
  - related to sealangdotorg/sea#19
  - related to sealangdotorg/sea#22
ppaulweber added a commit to casm-lang/libcasm-fe that referenced this issue Apr 8, 2017
* fixed 'find()' method, because it did not call the sub-namespace to
  search for the next namespace part
  - related to sealangdotorg/sea#22
ppaulweber added a commit to casm-lang/libcasm-fe that referenced this issue Apr 8, 2017
* if a CallExpr is relative, the symbol resolver forwards this problem
  further to the type inference pass
  - related to ref sealangdotorg/sea#22
  - related to ref sealangdotorg/sea#20
ppaulweber added a commit to casm-lang/libcasm-fe that referenced this issue Apr 11, 2017
* added derived and rule 'visit()' methods to register (temporary) their
  parameter symbols so that they also get checked during the symbol
  resolving stage/phase
  - related to ref sealangdotorg/sea#22
This was referenced Apr 14, 2017
ppaulweber added a commit to casm-lang/libcasm-fe that referenced this issue Apr 18, 2017
* fixed error message to print full identifier path instead only the
  base name
  - related to ref sealangdotorg/sea#22
ppaulweber added a commit to casm-lang/libcasm-fe that referenced this issue Apr 19, 2017
* changed 'self' to be a internal 'function' element and not a 'builtin'
  IR element
* adopted the 'init' construction and 'initially' update of the
  'program' function
  - related to ref sealangdotorg/sea#19
  - related to ref sealangdotorg/sea#22
  - related to ref sealangdotorg/sea#20
ppaulweber added a commit to casm-lang/libcasm-fe that referenced this issue Apr 19, 2017
* moved self definition inside the specification node
  - related to sealangdotorg/sea#19
  - related to sealangdotorg/sea#22
  - related to sealangdotorg/sea#20
* generated grammar parser
ppaulweber added a commit to casm-lang/libcasm-ir that referenced this issue Apr 19, 2017
* removed 'self' built in, due to the new AST-based definition and it is
  general a AST-only feature
  - see ref sealangdotorg/sea#19
  - see ref sealangdotorg/sea#20
  - see ref sealangdotorg/sea#22
@ppaulweber
Copy link
Contributor Author

branch merged into #32

ppaulweber added a commit to casm-lang/libcasm-fe that referenced this issue Apr 29, 2017
* changed and fixed stack-frame variable handling
  - related to ref sealangdotorg/sea#22
ppaulweber added a commit to casm-lang/libcasm-fe that referenced this issue May 7, 2017
* fixed logger integration in the symbol resolver pass, due to an API change
  in the libstdhl::Logger implementation
  - see: sealangdotorg/libuse@84fe1df
  - related to sealangdotorg/sea#22
@ppaulweber ppaulweber modified the milestones: prototype, release_auxentios Nov 5, 2017
@ppaulweber
Copy link
Contributor Author

already completed, closing this issue for good!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant