1. Syntax
    1. Synaxt trees
      1. Source information
        1. grammatical construct
        2. lexical token
        3. trivvia
          1. comments
          2. whithe space
          3. preprocessor directives
        4. literal
          1. fixed value in source code
      2. can produce exat text it was paresd from
        1. można dzieki temu edytowac source text
        2. mozna dostac representacje sub tree
      3. A syntax tree is literally a tree data structure, where non-terminal structural elements parent other elements. Each syntax tree is made up of nodes, tokens, and trivia.
    2. Syntax node
      1. represents constructs
        1. declarations
        2. statments
        3. clauses
        4. expresions
        5. etc
        6. all are derived from
          1. Microsoft.CodeAnalysis.SyntaxNode.
          2. https://docs.microsoft.com/en-us/dotnet/api/microsoft.codeanalysis.syntaxnode
        7. node is non-terminal
          1. has parent
          2. node has accees to parent via
          3. SyntaxNode.Parent
          4. has children
          5. SyntaxNode.ChildNodes()
          6. returns childrent list
          7. no tokens on that list
          8. decendant vs children
          9. Each node also has methods to examine Descendants, such as DescendantNodes, DescendantTokens, or DescendantTrivia - that represent a list of all the nodes, tokens, or trivia that exist in the sub-tree rooted by that node.
          10. descendant has more info then children
    3. syntax tokens
      1. leaf in graphs
      2. examples
        1. Indetifiers
        2. literrals
          1. (przypisane wartosci)
        3. punctuation
      3. CLR
        1. https://en.wikipedia.org/wiki/Common_Language_Runtime
      4. https://docs.microsoft.com/en-us/dotnet/api/microsoft.codeanalysis.syntaxtoken
    4. trivia
      1. fluff
        1. white spaces
        2. commentes
        3. preprocessor commands
        4. etc
      2. they are not child of node
        1. but are part of syntaxt trees
      3. no parent
      4. but has releated nodes
    5. kinds
      1. https://docs.microsoft.com/en-us/dotnet/api/microsoft.codeanalysis.csharp.syntaxkind?view=roslyn-dotnet
  2. length
    1. SimpleMember?
  3. Semantic
    1. add to synatax language rules
    2. Compilation
      1. Represents EVERYTHING NEEEDED to compile a C# (or VB) program
        1. includes
          1. assembly
          2. references
          3. compiler options
          4. source files
      2. has a lot of methods for helping with finding relations between symbols
      3. Compliation cannot be changed
        1. but can be replaced by new one
    3. Symbols
      1. represenation of distinc elments
        1. either from souce code
        2. or meta data
      2. examples
        1. namespace
        2. type
        3. method
        4. property
        5. fieldd
        6. event
        7. parameter
        8. local variable
      3. a lot of methods for finding then
        1. examples
          1. find a symbol for a declered type by its common metadate name
          2. access entire symbol table as tree os symbols rooted by the globalnamespace
      4. contains additonal info
        1. other refenced symbols
        2. each symbol kind has separate interface derived from ISymbol
          1. eachhas its own methods and properties
          2. many properites directly refrene other symbols
          3. example IMethodSymbol.ReturnType
      5. there is no diffrence depending on source
        1. method from source code and method from assembly both will be IMethodSymbol
    4. Semantic Model
      1. A semantic model represents all the semantic information for a single source file. You can use it to discover the following:
        1. The symbols referenced at a specific location in source.
        2. The resultant type of any expression.
        3. All diagnostics, which are errors and warnings.
        4. How variables flow in and out of regions of source.
        5. The answers to more speculative questions.
        6. A semantic model represents all the semantic information for a single source file. You can use it to discover the following: